Excel Makro das Schriftfarbe nach Abfrage ändert ?
Hallo liebe Freunde,
ich habe eine Frage. Wir managen unsere Reparaturaufträge mit Excel. Das heisst, in jeder Zeile gibt es die Spalten "Auftragsnummer" "Anliegen" "Datum" "Mitarbeiter" usw.
Wenn ein Auftrag erledigt ist, wird die Schriftfarbe der entsprechenden Zeile einfach in rot geändert.
Das Problem ist, wenn ich 5000 Aufträge habe, muss ich jede Auftragsnummer immer einzelnd suchen und dann die Zeile markieren.
Kann man nicht ein Makro schreiben, das eine Eingabemaske öffnet in die man die Auftragsnummer eingibt und er daraufhin die komplette Zeile in der die Auftragsnummer steht in rot einfärbt ?
Ich danke euch ganz Herzlich für eure Hilfe.
Viele Grüße
Antwort schreiben
Antwort 1 von rainberg vom 17.10.2020, 10:33 Options
Hallo Wuschl,
da brauchst Du kein Makro, das geht auch mit der Bedingten Formatierung.
Wie lautet denn das Kriterium nach welchem die Zeile gefärbt werden soll und in welcher Spalte steht es?
Über welche Spalten soll sich die Zeilenmarkierung erstrecken?
Gruß
Rainer
Antwort 2 von Wuschl32 vom 17.10.2020, 10:42 Options
Die Spalte ist die Erste also "A" oder auch Auftrag als Überschrift. Also ich stell mir vor, man gibt die Auftragsnummer ein, und er soll dann einfach die komplette Zeile in der die entsprechende Auftragsnummer steht, rot einfärben (die Schrift).
Danke Danke
Antwort 3 von rainberg vom 17.10.2020, 11:14 Options
Hallo Wuschl,
die komplette Zeile färben ist Unsinn, es werden dadurch unnötige Resourcen aufgefressen.
Du solltest daher die Formatierung nur bis zur letzten beschriebenen Spalte vornehmen.
So gehts:
- markiere den Bereich A2:K5000 (evtl. anpassen)
- rufe die Bedingte Formatierung auf
- gib unter "Formel ist:" diese Formel ein =$A2<>""
- wähle eine Schriftfarbe und drücke OK
Nur wird bei Eingabe eines Wertes in Spalte A die eingestellte Schriftfarbe in allen beschriebenen Zellen der relevanten Zeile aktiv.
Gruß
Rainer
Antwort 4 von BigF vom 18.10.2020, 19:36 Options
Hi Wuschl32
Wenn ich das richtig verstanden hab, wird der Auftrag eingetragen, wenn ihr ihn bekommt. Rot eingefärbt soll er aber erst werden wenn er erledigt ist.
Dazu mein Vorschlag:
Sub Habe_Fertig_Makro()
E = Val(Application.InputBox("Auftrags-Nummer ?"))
For Each A In Range("A2:A1000") ' oder anpassen !!!
If E = A Then Rows(A.Row).Font.ColorIndex = 3
Next A
End Sub
Gruss an alle
BigF
Antwort 5 von nighty vom 19.10.2020, 09:18 Options
hi BigF :-)
folgend aufbauend auf deiner idee :-)
gruss nighty
deinen code ein wenig korrigiert
Sub Habe_Fertig1_Makro()
Dim Eingabe As String
Dim DZelle As Range
Eingabe = Application.InputBox("Auftrags-Nummer ?")
For Each DZelle In Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row) ' oder anpassen !!!
If Eingabe = DZelle Then
Rows(DZelle.Row).Font.ColorIndex = 3
End If
Next DZelle
End Sub
deine idee ueber ein array was enorm schneller ist
Option Explicit
Sub Habe_Fertig1_Makro0()
Dim zeile As Long, Zaehler As Long
Dim Eingabe As String
zeile = Range("A" & Rows.Count).End(xlUp).Row
ReDim SpalteA(zeile, 1) As Variant
SpalteA() = Range("A1:A" & zeile)
Eingabe = Application.InputBox("Auftrags-Nummer ?")
For Zaehler = 2 To zeile
If SpalteA(Zaehler, 1) = Eingabe Then Rows(Zaehler).Font.ColorIndex = 3
Next Zaehler
End Sub
deine idee mit der findfunction,was die schnellste darstellt
Sub Habe_Fertig2_Makro()
Dim suche As Range
Set suche = Workbooks(1).Worksheets(1).Range("A2:A" & Sheets(1).Range("A" & Rows.Count).End(xlUp).Row).Find(Val(Application.InputBox("Auftrags-Nummer ?")))
If Not suche Is Nothing Then Rows(suche.Row).Font.ColorIndex = 3
End Sub
Antwort 7 von coros vom 28.10.2020, 12:13 Options
Hallo Wuschi,
welches Makro hast Du eingefügt? Du musst schon etwas genauer werden.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du
ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 8 von Wuschl32 vom 28.10.2020, 18:15 Options
Hast natürlich recht.
Ich habe alle probiert die nighty am 19.10.2008, 09:18 gepostet hat.
Viele Danke für eure Hilfe