2011-06-23 35 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到最大)'代码'套件我的代码更好。谢谢! –

相关问题