在单独EXCEL表格操作中容易选中我们想选中的区域,但在VBA程序设计中特别是FOR循环语句中,需要按照我们的思路选取任意区域却不是那么简单。
我们发现range(“a1:d2”)可以选定制定连续单元格,但明显发现这里的列号是字母而行号是数字,而cells()则只能表示某个单元格,下面我们通过两者结合达到任意选定区域的效果,实例如下:
lastrw = Sheets("示例").Range("a1").End(xlDown).Row
lastcl = Sheets("示例").Range("a1").End(xlToRight).Column
Sheets("示例").Select
With Sheets("示例")
For i = 1 To xzsm
For ii = 2 To lastrw
If .Range("a" & ii) = listmsg(i) Then
If chartdat Is Nothing Then
Set chartdat = .Range(.Cells(ii, 1), .Cells(ii, lastcl))
Else
Set chartdat = Union(chartdat, .Range(.Cells(ii, 1), .Cells(ii, lastcl)))
End If
End If
Next
Next
这里在结合range和cells的时候,我们注意到UNION起到了很大作用。UNION在我们用到循环结构时可以达到选取我们想要的不连续的行或列的数据集合。