2011-06-23 11 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)になることがさらによくなります。なぜ私は後者が2つの場所で ' - 1'を書くのを忘れていたので、後者は必然的に2つのデバッグサイクルを通ってあなたを導いてくれました。バア、+1。 –

+0

ya、私はオプションベース1になるようにコードを設定していますので、私は 'コード' ReDim Results1(1 To Max)の 'code'スイートを自分のコードより良く感じます。ありがとう! –

関連する問題