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

Phi*_* S. 0 excel vba

我试图理解以下行:

.Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).ClearContents
Run Code Online (Sandbox Code Playgroud)

有人能说出.Range("A1:A" & 是什么意思吗?

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

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

有人可以判断这是否正确,并总体解释整条生产线试图做什么?

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

Yow*_*E3K 5

.Range("A1:A" & .Cells(.Rows.Count, "A").End(xlUp).Row).ClearContents
Run Code Online (Sandbox Code Playgroud)

打破界限(你大部分都说对了):

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

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

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

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

  5. .Row然后找到该非空单元格的行号。为了便于说明,让我们假设这是单元格 $A$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