Supportnet / Forum / Tabellenkalkulation
Excel Makro das Schriftfarbe nach Abfrage ändert ?
Frage
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 1 von rainberg
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
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
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
Danke Danke
Antwort 3 von rainberg
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
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
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
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
hi BigF :-)
folgend aufbauend auf deiner idee :-)
gruss nighty
deinen code ein wenig korrigiert
deine idee ueber ein array was enorm schneller ist
deine idee mit der findfunction,was die schnellste darstellt
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 Subdeine 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 Subdeine 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 SubAntwort 6 von Wuschl32
Ich habe das Makro jetzt mit eingefügt. Wenn ich es ausführe, kommt eine Abfrage "Auftrag?". Wenn ich eine Nummer eingebe wird die Zeile aber nicht rot.
Was habe ich falsch gemacht ? Danke
P.S: Hier mal ein Screenshot von der Datei:
http://www.bilder-hochladen.net/files/8jil-1-jpg.html
Was habe ich falsch gemacht ? Danke
P.S: Hier mal ein Screenshot von der Datei:
http://www.bilder-hochladen.net/files/8jil-1-jpg.html
Antwort 7 von coros
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.
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
Hast natürlich recht.
Ich habe alle probiert die nighty am 19.10.2008, 09:18 gepostet hat.
Viele Danke für eure Hilfe
Ich habe alle probiert die nighty am 19.10.2008, 09:18 gepostet hat.
Viele Danke für eure Hilfe

