2017-06-08 10 views
1

なぜこのマクロはすべてのワークシートの色を変更しないのですか?
アクティブなワークブックの最初のワークシートでのみ動作します。
私はワークブックのすべてのワークシートを通過したいです。アクティブなワークシートを指し ありがとうすべてのワークシートをループするFor EachのVBA

Option Explicit 

Private Sub CheckBox13_Click() 
    Dim I As Long, j As Long 
    Dim ws As Worksheet 

    For Each ws In ActiveWorkbook.Worksheets 
     If CheckBox13.Value = True Then 
      For I = 1 To 700 
       For j = 1 To 10 
        If Cells(I, j).Interior.Color = RGB(252, 252, 250) Then 
         Cells(I, j).Interior.Color = RGB(217, 217, 217) 
        End If 
       Next j 
      Next I 
     End If 

     If CheckBox13.Value = False Then 
      For I = 1 To 700 
       For j = 1 To 10 
        If Cells(I, j).Interior.Color = RGB(217, 217, 217) Then 
         Cells(I, j).Interior.Color = RGB(252, 252, 250) 
        End If 
       Next j 
      Next I 
     End If 
    Next 
End Sub 
+3

すべてのCell文の前にwsを追加します。 'ws.Cells(I、j).Interior.Color = ...'あなたがデフォルトのワークシートをアクティブなものに指定しない限り、 – BerticusMaximus

答えて

3

あなたがCells(I, j)を使用しています。参考のためにwsオブジェクトをこのように使用することをお勧めします。

ws.Cells(I, j) 
+1

詳細については、[VBAベストプラクティス:ワークシートを想定しない](https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9218/never-assume-the-worksheet)を参照してください。 –

関連する問題