2017-06-08 3 views
1

Warum ändert dieses Makro nicht die Farbe aller meiner Arbeitsblätter?
Es funktioniert nur für das erste Arbeitsblatt meiner aktiven Arbeitsmappe.
Ich möchte, dass es alle meine Arbeitsblätter meines Arbeitsbuchs durchläuft. Thanx Schleife durch alle meine Arbeitsblätter VBA mit For Each

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

Fügen Sie ws vor all Ihren Cells-Anweisungen hinzu. 'ws.Cells (I, j) .Interior.Color = ...' wenn Sie das gewünschte Arbeitsblatt nicht angeben, wird es standardmäßig auf das aktive Arbeitsblatt gesetzt. – BerticusMaximus

Antwort

3

wenn Sie Cells(I, j) verwenden, bezieht sich auf das aktive Arbeitsblatt. Sie möchten das Objekt ws in Ihrer Referenz wie folgt verwenden:

ws.Cells(I, j) 
+1

Für weitere Informationen lesen Sie [VBA Best Practices: Niemals das Arbeitsblatt übernehmen] (https://stackoverflow.com/documentation/excel-vba/1107/vba-best-practices/9218/never-assume-the-worksheet). –

Verwandte Themen