范围 – VBA – 为什么这个代码不起作用?
我试图填补我的VBA知识中的一些空白,我很困惑,为什么这个代码不能在VBA中工作:
Sub RangeTest() Dim TemplateRange As Range Set TemplateRange = ThisWorkbook.Worksheets("Template").Range("A7:BO200") For Each thing In ThisWorkbook.Worksheets("Template").Range("A7:BO200").Columns(2) Debug.Print thing Next thing End Sub
范围不是可以迭代的一组其他对象吗? 现在想想吧,我想这可能不是。 我注意到我可以遍历范围的.values。 但是我认为范围本身只是一个对象?
您必须说明要使用的.Columns()
对象中的哪个集合。 在这种情况下, .Cells
集合似乎是你想要的:
Sub RangeTest() Dim TemplateRange As Range Set TemplateRange = ThisWorkbook.Worksheets("Template").Range("A7:BO200") For Each thing In TemplateRange.Columns(2).Cells ' This is what you want to use, I think --^^^^^^ Debug.Print thing Next thing End Sub
如果你改变
Debug.Print thing
至
thing.Select
你会看到“东西”是你范围内的第二列(So B7:B200)的整个范围。 如果要遍历此范围内的每个单元格,可以将For …语句更改为
For Each thing In ThisWorkbook.Worksheets("Template").Range("A7:BO200").Columns(2).Cells