2016-07-12 21 views
1

こんにちは私はVBAのマクロでExcel用に取り組んでいます。私は以下のようにコード内に入れ子のforループを持っています。 2番目のループは実行されません。 2番目のループ内のMsgBox()コマンドでも何の動作も起こらず、プログラムはエラーが報告されていないネストされたループをスキップするように見えます。平易な英語でVBAネストされたforループは実行されません

このネストされたループする必要があります

1)は、最初のループの配列categories_string()内のiエントリから文字列を取ります。

2)は、第2のループのExcelファイル(の列「AE」の300+の行を反復、「長さ」は「AE」におけるデータの列)

3)探しの長さであります文字列が一致し、変数を0(if文)に設定したcategories_value配列の対応するエントリに1を追加します。

For p = 1 To length 

For i = LBound(categories_string) To UBound(categories_string) 
    For p = 1 To p = length 
     If Worksheets("sheet1").Cells(p + 2, "AE").Value = categories_string(i) Then 
     categories_value(i) = categories_value(i) + 1 
     End If 
    Next 
Next 
+8

'p = 1 To length' –

+0

既に配列を操作する方法を知っているので、列AEの値を配列に入れて、それを循環させるのはどうですか?セルをループさせる方が速いでしょう。 'AEArray = Worksheets(" sheet1 ")。Range(" AE3:AE "&length).Value'この配列の代わりに別のループを実行します。 –

+0

あなたの答えはそれを修正しました。そして素晴らしい提案!これはVBAを使用して私の2日目ですので、任意のアドバイスをいただきありがとうございます。 – PSwalker

答えて

4

変更

For p = 1 To p = length 

右にあなたを修正する必要があります。

特にcategories_stringが大きく、lengthが大きい場合は、Scott Cranner's commentも考慮する必要があります。または、練習のためにそれをしてください

関連する問題