我试图填补我的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。但我想范围本身只是一个对象?
答案 0 :(得分:3)
您必须说明要使用的.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
答案 1 :(得分:2)
如果你改变了
Debug.Print thing
到
thing.Select
你会看到'东西'是你范围内第2列的整个范围(So B7:B200)。如果要遍历此范围中的每个单元格,可以将For ...语句更改为
For Each thing In ThisWorkbook.Worksheets("Template").Range("A7:BO200").Columns(2).Cells