Excel VBA: .Range & Cells(row.count xlup
我试图理解以下内容:
1
| .Range("A1:A" & .Cells(.Rows.Count,"A").End(xlUp).Row).ClearContents |
有人可以说出.Range(" A1:A"&的意思吗?
到目前为止,我的研究发现:
细胞是指细胞
.Rows.Count是一个函数,该函数返回表中的行数(= 65536)
," A"指您要搜索的列(此处为A)
.End告诉EXCEL从哪里开始
xl向上EXCEL搜索的方向
从底部排第一个不为空的单元格
.ClearContents删除所有值
有人可以说出这是否正确,并从总体上解释整条生产线试图做什么吗?
假设以后可能在A列中添加了一些值,但是我只想删除6个单元格的内容(A50:A55),该如何更改?
-
如果要删除这6个单元格,则.Range("A50:A55").ClearContents将执行此操作。 您提供的代码清除了A列的使用部分。也可以更高效地对其进行重写。
1
| .Range("A1:A" & .Cells(.Rows.Count,"A").End(xlUp).Row).ClearContents |
分解行(您大部分都正确):
首先要注意的是许多属性/方法开始处的.。这就告诉我们代码必须在With块之内,可能类似于With Worksheets("Sheet1")之类。因此,以.开头的所有内容只是说Worksheets("Sheet1").的捷径。
.Rows返回工作表中的所有Rows,因此.Rows.Count是存在多少行的计数。在旧版本的Excel中为65,536,在新版本中为1,048,576。
.Cells(.Rows.Count,"A")返回一个对象,该对象引用列A中的最后一个单元格,例如单元格位于$ A $ 65536
.End(xlUp)表示从该单元格开始并向上查找先前的非空单元格。 (如果单元格$ A $ 65536是非空的,它将做一些不同的事情,但是我会掩盖一下。)
.Row然后找到该非空单元格的行号。为了便于说明,我们假设单元格为$ A $ 5201,因此.Cells(.Rows.Count,"A").End(xlUp).Row将返回5201
"A1:A" & 5201将"A1:A"与"5201"连接(从数字到字符串的隐式类型转换)以生成字符串"A1:A5201"
Range("A1:A5201").ClearContents将清除单元格A1:A5201的内容