2011-06-23 65 views
-1

我目前正在使用VBA中的搜索功能,它將從搜索範圍中獲取結果並將單元格位置的地址輸入到數組中。我試圖用下面的代碼設置數組。VBA ::將範圍結果傳遞到數組

Dim FindRange1 as Range 
Dim Find1 as Range 
Dim Results1() as Variant 
Dim R1 as integer 
Dim Max as integer 

Max = Range("E7:E1000").Cells.Count 

     Set FindRange1 = Worksheets("Properties").Range("P7:P1000") 
      If ILsearch.P1B1.Value = True Then 
       For R1 = 1 To Max 
        For Each Find1 In FindRange1 
         If (Find1.Value < TextBox1) And (Find1.Value > "0") Then 
          Results1(R1) = Find1.Address 
         End If 
        Next Find1 
       Next R1 
      End If 
+1

那麼問題是什麼?你不期望它做什麼? – jonsca

回答

2

您需要維度數組;

redim Results1(Max) '//this will leave an empty Results1(0) 

更好地使用0索引;

redim Results1(Max-1) 
... 
Results1(R1 - 1) = Find1.Address 

請注意,這是創建一個「空白」的數組,其中只有滿足您的條件的索引被填充。

+0

更明確地指定下限:'ReDim Results1(1 To Max)'或'ReDim Results1(0 To Max-1)'。順便說一句,我不明白爲什麼後者會比前者更好或更差 - 除了後者不可避免地導致你通過幾個調試周期,因爲你忘了寫幾個地方! Baaah,+1。 –

+0

雅,我已經設置我的代碼是選項基礎1,所以我覺得'代碼'ReDim Results1(1到最大)'代碼'套件我的代碼更好。謝謝! –

相關問題