范围 - VBA - 为什么这段代码不起作用?

时间:2015-02-06 15:50:57

标签: excel vba excel-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。但我想范围本身只是一个对象?

2 个答案:

答案 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