Supportnet Computer
Planet of Tech

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

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

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

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

Antwort 5 von nighty

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 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

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.

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