Ich versuche, einen Hervorhebungsprozess zu automatisieren, um zu zeigen, dass bestimmte Zeilen abgeschlossen sind. Dieser Prozess funktioniert gut, aber am Anfang meines Blattes versuche ich, dass der Code einen "Key" für das Blatt erstellt, um die verschiedenen Bedeutungen der Farben zu zeigen. Im Schlüssel werden die Farben Weiß, Grün und Rot als Beschriftungen für Nicht abgeschlossen (Weiß), Fertig (Grün) und Fehler/Unvollständig (Rot) verwendet. Grau wird auch für private Rohre verwendet. Ich versuche, die entsprechenden Labels mit ihrer Farbe zu färben, grün wie grün, rot wie rot usw. Ich habe einen Code dafür erstellt, der für die erste Zeile funktioniert, aber auf grün wird die grüne Zelle nicht als grün eingefärbt (es lässt es weiß) und auf "Rot" färbt es die Zelle als grün. Hier ist der Code ich verwende (ich entschuldige mich es schlecht ist, wie ich bin neu in Codierung):Excel 2010 VBA mit Einstellung Zellfarben
Sub SmartHighlight()
Dim Counter As Integer
Dim i As Integer
Dim j As Integer
Dim k As Range
Dim Chkr As Integer
Chkr = 0
xTitleId = "Smart Highlighter"
MsgBox "This macro analyzes the given pipe data to highlight completed sections."
For Each k In ActiveSheet.UsedRange.Rows
Counter = 0
i = 8
For j = 0 To 3
If ActiveSheet.Cells(k.Row, i).Value = 0 Then
Counter = Counter + 1
End If
i = i + 1
Next j
If ActiveSheet.Cells(k.Row, 1) = "PIPE_ID" Then
ActiveSheet.Cells(k.Row, 15).Value = "KEY:"
ActiveSheet.Cells(k.Row, 16).Value = "White"
ActiveSheet.Cells(k.Row, 17).Value = "Not yet completed."
ActiveSheet.Cells(k.Row, 18).Value = "Grey"
k.Cells(k.Row, 18).Interior.ColorIndex = 15
ActiveSheet.Cells(k.Row, 19).Value = "Private."
ElseIf ActiveSheet.Cells(k.Row, 1) = "" And Chkr = 0 Then
ActiveSheet.Cells(k.Row, 16).Value = "Green"
k.Cells(k.Row, 16).Interior.ColorIndex = 4
ActiveSheet.Cells(k.Row, 17).Value = "Completed."
Chkr = Chkr + 1
ElseIf ActiveSheet.Cells(k.Row, 1) = "" And Chkr = 1 Then
ActiveSheet.Cells(k.Row, 16).Value = "Red"
k.Cells(k.Row, 16).Interior.ColorIndex = 3
ActiveSheet.Cells(k.Row, 17).Value = "Error/Incomplete."
ElseIf ActiveSheet.Cells(k.Row, 4) = "PRIVATE PIPE" Then
k.EntireRow.Interior.ColorIndex = 15
ElseIf Counter <> 4 Then
k.EntireRow.Interior.ColorIndex = 4
ElseIf Counter = 4 And ActiveSheet.Cells(k.Row, 14) = "" Then
k.EntireRow.Interior.ColorIndex = 3
End If
Next k
End Sub
Und hier ist die Ausgabe in Excel: Click for Image
Wenn jemand kann mir die Färbung helfen korrigieren Fehler, der am meisten geschätzt würde. Vielen Dank!
Bedingte Formatierung * könnte * für diese Anwendung einfacher sein ... –
Danke für die Antwort E. Trauger! Ich versuche leider, dieses Makro in anderen Blättern zu verwenden, weshalb ich versuche, es mit VBA zu schreiben.Von dem, was ich weiß, gibt es keine Möglichkeit, bedingte Formatierung automatisch auf alle meine anderen Blätter zu übertragen (es gibt ziemlich viele), ohne sie erneut zu definieren. Letztendlich versuche ich, dieses Makro mit meiner Menübandleiste zu verbinden, damit ich es einfach einmal anklicken und mit dem nächsten fortfahren kann. – dashton