我们在程序中经常用到FOR循环,其中控制变量的边界值最多的是表格的最大行或者最大列。
有时候也要用到某行或某列最后单元格的内容。
以上两种情况就要用到很相近的两个语句,并且容易混淆导致调试出现运行一般错误,又很难注意到类似明显的错误。
Sheets("统计").Range("a1").End(xlToRight).Column
表示第一行的最后列的列数,也是本行的数据单元格列数。
Sheets("统计").Range("a1").End(xlToRight).Columns
表示的是第一行的最后单元格的数据内容,而不是列数。
分别对两个语句的示例如下:
lastrw = Workbooks("实例.xlsm").Sheets("表1").Range("a1").End(xlDown).Row
Workbooks("实例.xlsm").Sheets("统计").Select
lastcl = Workbooks("实例.xlsm").Sheets("统计").Range("a1").End(xlToRight).Column + 1
For ii = 1 To lastrw
If CVar(Mid(Workbooks("实例.xlsm").Sheets("表1").Range("p" & ii), 5, 2)) = i Then sm = Sheets("统计").Range("a1").End(xlToRight).Columns
Next
Sheets("统计").Range("a1").End(xldown).row
表示第一列的最后行的行数,也是本列的数据单元格行数。
Sheets("统计").Range("a1").End(xldown).rows
表示第一列的最后行的最后单元格的数据内容。