Excel VBA:.Range&Cells(row.count xlup

我想了解以下行:

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

有人可以告诉什么。 范围(“A1:A”&手段?

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

  1. 细胞是指细胞
  2. .Rows.Count是一个函数,返回表中的行数(= 65536)
  3. ,“A”是指你想要search的列(这里是A)
  4. .End告诉EXCEL从哪里开始
  5. xlUp EXCEL应该search的方向
  6. 从底部开始的第一个单元格不是空的
  7. .ClearContents删除所有值

有人可以告诉我们这是否正确吗?总体来说,整个行程是怎么做的?

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

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

打破了这条线(你们大部分都是对的):

  1. 首先要注意的是. 在许多属性/方法的开始。 这告诉我们代码必须在With块内,可能与With Worksheets("Sheet1")或类似的一样。 所以一切都以一个开始. 只是说Worksheets("Sheet1").的快捷方式Worksheets("Sheet1").

  2. .Rows返回工作表中的所有Rows ,因此.Rows.Count是有多less行的计数。 在较早版本的Excel中,它是65536,在较新的版本中是1,048,576。

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

  4. .End(xlUp)表示从该单元格开始向上find先前的非空单元格。 (如果单元$ 65536不是空的,它会做一些不同的事情,但是我会掩饰这一点。)

  5. 然后find那个非空单元格的行号。 为了这个解释,让我们假装是单元$ A $ 5201所以.Cells(.Rows.Count, "A").End(xlUp).Row将返回5201

  6. "A1:A" & 5201"A1:A""5201" (从数字到string的隐式types转换)连接以生成string"A1:A5201"

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