2015-02-06 88 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

相關問題