2016-10-07 14 views
2

フォルダーを検索して、で終了するすべてのファイルをシートにコピーしました(DAT)。その後VBAを使用してExcelシートの名前にネストされたループ

enter image description here

私はWorksheets("Input").Range("X2")

enter image description here

で発生した日付が、私は で発生したIDにチェックするシートの名前と同じであるかどうかを確認したいWorksheets("Input").Range("c2")同じIDと正しい日付のシートの1つの名前で一致してください。私は

' for the exact match 
Dim mRange As Range 
Set mRange = ThisWorkbook.Worksheets("Input").Range("X2") 
Set mRange = Range(dicRange, dicRange.End(xlDown)) 

Dim WS_Count As Integer 
     Dim I As Integer 

     ' Set WS_Count equal to the number of worksheets in the active 
     ' workbook. 
     WS_Count = ActiveWorkbook.Worksheets.Count 

     ' Begin the loop. 
     For Each direc In mRange 
      For I = 1 To WS_Count 
      If direc & "K1LTIOS1.DAT" = ActiveWorkbook.Worksheets(I).Nam Then 
      ' Insert your code here. 
      ' The following line shows how to reference a sheet within 
      ' the loop by displaying the worksheet name in a dialog box. 
       MsgBox ActiveWorkbook.Worksheets(I).Name 
(what I want to do actually : copy the whole line from the sheet 
ddMMYYK1LOS1.DAT where the ID from Worksheets("Input").Range("c2")` occurs) 
     End If 
       Next I 
       Next 

を開始し、この部分で始まるしかし、私はIf direc & "K1LTIOS1.DAT" = ActiveWorkbook.Worksheets(I).Nam Thenにエラーメッセージを取得するには:実行時エラー「438」のを!

1)このエラーの原因は何ですか?

2)おそらくこのようなネストされたループは効率的ではありません。より良い可能性はありますか?

+2

あなたの***はどこにいますか?*** –

+2

このステートメントの 'End if'が不足しています'もしdirec& "K1LTIOS1.DAT" = ActiveWorkbook.Worksheets(I).Nam Then ' –

+0

ああ、申し訳ありません!代わりの方法はどうですか?ネストされたネストされたループの別のメソッドを知っていますか – maniA

答えて

1

あなたのコードから何の指示もありません。direcです。​​はどこにありますか?しかし、これはあなたの本当の問題です。

ActiveWorkbook.Worksheets(I).Nam 

.Namとはなんですか?

+0

あなたはまったく正しいです。私が経由でチェックしても本当の意味はない?コンソールで – maniA

+1

実際、私はちょっと馬鹿です。あなたが 'For Each'ループでそれを使用しているので、それは変種でなければなりません。そして、あなたは 'Dim' mRangeを実行するので、それはセルになります。私は明示的にそれを変種として調光することをお勧めします。すべてのコードモジュールの先頭に 'Option Explicit'を追加すると、これを実行しやすくなり、最終的により良いコードにつながります。 – Tim

+0

私はセル(この場合はdirec)を薄暗くすることはできません。しかし、まだ1つの質問:私はどのようにこの部分を実装することができます: ddMMYYK1LOS1.DATワークシート( "入力")からのID。範囲( "入力")のRange( "c2") 'が発生します。範囲( "Y2") – maniA

関連する問題