
Ich bin hier ganz neu und erstelle eine bedingte Formatierung, um Zahlen über dem Durchschnitt aller Werte in einer Zeile hervorzuheben.
Ich muss diese Formatierung auf alle Zeilen in allen Blättern der Arbeitsmappe anwenden.
Von dem, was ich gesammelt habe, habe ich Folgendes:
Sub AllSheets()
Dim ws As Worksheet
For Each ws In Worksheets
Range("A1:S1").Copy
For Each r In Selection.Rows
r.PasteSpecial (xlPasteFormats)
Next r
Application.CutCopyMode = False
Next ws
End Sub
Aber wenn ich das ausführe, wird es nur auf die aktiven ausgewählten Zellen angewendet. Wie kann ich das beheben?
Antwort1
Sie müssen sicherstellen, dass der Range()
verwendete Bereich tatsächlich der Bereich im ist ws
. Andernfalls wird es nur auf dem Activesheet ausgeführt.
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("A1:S1").Copy
For Each r In Selection.Rows
r.PasteSpecial (xlPasteFormats)
Next r
Application.CutCopyMode = False
Next ws
End Sub
Aber funktioniert das? Es ist etwas "enger", hauptsächlich versuche ichvermeide das Benutzen.Selection
Dim ws As Worksheet
For Each ws In Worksheets
ws.Range("A1:S1").Copy ' Or replace this with actual range, not just `Selection`
For Each r In ws.Range("A1:S1").Rows
r.PasteSpecial (xlPasteFormats)
Next r
Next ws
End Sub
Bearbeiten: ist mir gerade aufgefallen ... Warum überhaupt die For each r
Schleife verwenden, wenn Sie sowieso nur eine Zeile verwenden?
Antwort2
Ich muss diese Formatierung auf alle Zeilen in allen Blättern der Arbeitsmappe anwenden.
Tatsächlich braucht es Übung, um zu wissen, wie man die richtige Frage stellt. Sobald Sie das können, eine schnelle Suche:
Durch Arbeitsblätter blättern vba
Sub WorksheetLoop()
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 I = 1 To WS_Count
' 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
Next I
End Sub
Referenz:https://support.microsoft.com/en-us/help/142126/macro-to-loop-through-all-worksheets-in-a-workbook