Excel VBA:.Range&单元格(row.count xlup

时间:2016-12-16 03:34:32

标签: excel vba excel-vba

我想了解以下一行:

.Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).ClearContents

有人可以告诉 .Range(" A1:A"& 是什么意思?

从我的研究到目前为止,我发现了以下内容:

  1. 细胞指细胞
  2. .Rows.Count 是一个返回表格中行数的函数(= 65536)
  3. ," A" 是指您要搜索的列(此处为A)
  4. .End 告诉EXCEL从哪里开始
  5. xlUp EXCEL应搜索的方向
  6. 。路径从底部开始的非空的第一个单元格
  7. .ClearContents 删除所有值
  8. 有人可以判断这是否正确,并且总体上解释了整条生产线正在尝试做什么?

    假设以后可能会有值添加到A列,但我只想删除6个单元格的内容(A50:A55),我该如何更改?

1 个答案:

答案 0 :(得分:2)

.Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).ClearContents

打破界限(你大部分都是正确的):

  1. 首先要注意的是许多属性/方法开头的.。这告诉我们代码必须在With块内,可能类似于With Worksheets("Sheet1")或等价物。因此,以.开头的所有内容只是说出Worksheets("Sheet1").的捷径。

  2. .Rows会返回工作表中的所有Rows,因此.Rows.Count是有多少行的计数。在旧版本的Excel中,它是65,536,而在较新版本中,它是1,048,576。

  3. .Cells(.Rows.Count, "A")返回一个对象,该对象引用A列中的最后一个单元格,例如Cell位于$ A $ 65536

  4. .End(xlUp)说从该单元格开始,向上找到前一个非空单元格。 (如果单元格$ A $ 65536非空,它会做一些不同的事情,但我会掩盖它。)

  5. .Row然后找到该非空单元格的行号。为了解释这个问题,我们假装单元格为$ 5201,因此.Cells(.Rows.Count, "A").End(xlUp).Row将返回5201

  6. "A1:A" & 5201会将"A1:A""5201"连接起来(从数字到字符串的隐式类型转换)以生成字符串"A1:A5201"

  7. Range("A1:A5201").ClearContents将清除单元格的内容A1:A5201