2015-02-06 85 views
1

我尽量填写我的VBA knowledege一些差距,我很困惑,为什么这个代码不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

那么你可以只遍历每个单元,'对于每个东西在ThisWorkbook.Worksheets(“模板”)范围(“A7:BO200”)。列(2).Cells' – chancea 2015-02-06 15:57:10

回答

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 
+0

好吧,是的,我喜欢你解释的方式!我没有考虑过,我必须在我想要的列对象中指定该集合!哦,我只是重新输入范围,因为我尝试了不同的事情,看看我哪里出错了。 – timbram 2015-02-06 16:03:08

2

如果更改

Debug.Print thing 

thing.Select 

,你会看到 '东西' 是第2列在你的范围内的整个范围(所以B7:B200)。如果你想通过每一个在此范围内的细胞的迭代你可以改变你的...语句来

For Each thing In ThisWorkbook.Worksheets("Template").Range("A7:BO200").Columns(2).Cells 
+0

我喜欢你使用'.select'来找到更多关于我想要迭代的对象的信息!奇怪的是,我没有想过用这种方式来调试我的问题。 – timbram 2015-02-06 16:08:18

相关问题