VBA[bugs]:ループ文のカウンタがオーバーフローする

なにがどう

ループ文を実行したときにループカウンタがオーバーフローする。

   Dim i As Integer
   For i = 1 To Worksheets.Count
       If Workbooks(fileName).Worksheets(i).name = "foo" Then
           Application.DisplayAlerts = False
           Workbooks(fileName).Worksheets("foo").Delete
           Application.DisplayAlerts = True
       End If
   Next 

原因

変数の初期化漏れ。
ループカウンタiを複数個所で使用したために発生していた。クソオブクソ

修正後

   Dim i As Integer
   i = 0
   For i = 1 To Worksheets.Count
       If Workbooks(fileName).Worksheets(i).name = "foo" Then
           Application.DisplayAlerts = False
           Workbooks(fileName).Worksheets("foo").Delete
           Application.DisplayAlerts = True
       End If
   Next 
最終更新:2016年12月22日 11:55