VBAで手間取る

Do While ~ Loopがうまく使えない

会社のVBA作成に手間取っています。

Do While ~ Loopなのですが、短いと普通に回るのに、For Nextの入れ子にするとなぜか一回でLoopが抜けてしまう。

成功してるのはこんな感じ。

Sub Macro1()

   Dim Filename  As String

 Do While Filename <> ""
      MsgBox Filename

      Filename = Dir()
   Loop

End Sub

長いやつにすると「プロシージャの呼び出し、または引数が不正です。」となってします。

'失敗作のため下記はエラーが出ます
Sub Macro1()

   Dim Filename  As String

 Do While Filename <> ""
  If Filename <> newBook.Name Then
         For Each OpenBook In Workbooks
        '処理
         Next
   For Each Sh In newBook.Worksheets
      '処理
   Next
   For i = s + 1 To Worksheets.Count 'シートを統合シートの次~末尾までループ
      '処理
        With newBook.Worksheets(i) '各シート 
      '処理
         End With
         With JoinSh '統合シート
     ’その後も処理が続く
         End With
   Next i
     End If

     Filename = Dir()
   Loop

End Sub

もう一度見直します。

For Nextにしたら動いた

結局Do While~Loop文では他のFor~Nextと相性が悪いことが判明。
Do~Loop文をFor Each~Next文に書き換えたところ問題は解消しました。

' For Nextに変更
Sub Macro1()

   Dim f As File

 ' VBA記載ワークブックがあるフォルダ内をループ
 For Each f In fso.GetFolder(ThisWorkbook.Path).Files 
 
  If Filename <> newBook.Name Then
         For Each OpenBook In Workbooks
        '処理
         Next
   For Each Sh In newBook.Worksheets
      '処理
   Next
   For i = s + 1 To Worksheets.Count 'シートを統合シートの次~末尾までループ
      '処理
        With newBook.Worksheets(i) '各シート 
      '処理
         End With
         With JoinSh '統合シート
     ’その後も処理が続く
         End With
   Next i
     End If

     Filename = Dir()
  Next f

End Sub