Excel - Marko>Ganze Zeile mit Farbe ausfüllen

Hallo

Ich habe eine Excel-Tabelle mit mehreren Spalten und möchte folgendes Makro programmieren:

  • Wenn ich in die Spalte H an einer beliebigen Zeile /bps. H40) den Wert „in Arbeit“ schreibe, soll es mir den Text der ganzen Zeile Rot wiedergeben.
  • Zweitens möchte ich mit der Eingabe „freigegeben“ die ganze Zeile Grün einfärben (bsp. Spalte H40)

Da ich keine Erfahrung mit VBA habe, dachte ich frage mal hier die Experten nach. Vielen Dank für Infos.
Cheers, Chregu

Hallo
geh auf Makro aufzeichnen und führe dann alle Befehle manuell aus
(Das soll heissen, du machst alle klicks selbst, was du willst)
Das Makro zeichnet dir alles auf.
Wenn du fertig bist sagst du stop und speicherst es mit deiner Exceldatei ab.
Bei erneuten Aufruf der Datei Makros aktivieren und schon geht alles wie von selbst.
Du kannst dann das Makro noch bearbeiten und ein paar Sachen einbauen.

Mfg Werner

Danke, doch das funktioniert nicht. Weil ich in der Tabelle diese Werte in der Spalte H von 4 bis … aktualisiere.
Sprich einmal ist in H5 „freigegeben“ in H11 „in Arbeit“ usw.

Danke, doch das funktioniert nicht. Weil ich in der Tabelle
diese Werte in der Spalte H von 4 bis … aktualisiere.
Sprich einmal ist in H5 „freigegeben“ in H11 „in Arbeit“ usw.

Hi Christian,
irgendwie verstehe ich was du willst aber irgendwie auch nicht. Magste mal andre Worte benutzen um uns das zu erklären was genau du möchtest!?
Gruß
reinhard

Hallo Christian.

Ich habe hier mal was geschrieben, was Deinen Vorstellungen entsprechen könnte :

Private Sub Worksheet\_Change(ByVal Target As Range)
 On Error GoTo Fehler
 Select Case Target.Column
 Case 8 'Spalte H
 Select Case Target.Value
 Case "in Arbeit"
 Target.EntireRow.Interior.Color = vbRed
 Case "freigegeben"
 Target.EntireRow.Interior.Color = vbGreen
 Case Else
 Target.EntireRow.Interior.ColorIndex = xlNone
 End Select
 End Select
Ende:
 Exit Sub
Fehler:
 Resume Ende
End Sub

Kannst Du ja mal ausprobieren. Kopiere den Code ins das leere Code-Fenster der Tabelle, für die das Makro gelten soll. Ich weise allerdings gleich darauf hin, daß das Makro nicht 100%ig fehlerfrei funktioniert : Wenn Du einen Bereich markierst, der größer ist als eine Zelle, und Du drückst dann auf ‚Entf‘, wird ein Fehler ausgelöst. Daher die Fehlerbehandlungsroutine ‚On Error…‘

Viele Grüße
Carsten

Hi

erstmal vielen Dank.
Ich habs versucht, bin jetzt ein bisschen frustriert, weil ich das Marko nicht mal abspeichern konnte. Ja, bitte jetzt nicht lachen!
Mit dem Markorekoreder schnell etwas aufgenommen, dann mit dem von Carsten überschrieben, speichern. Und beim anwählen im Excel von Extras - Marko - Marko ist es einfach nicht da (sch…e)!
Mit der Hilfe hab ich es auch versucht, das geht genau gleich - ich verstehe das nicht. Wenn ich mit ALT + F11 dann in den VBA-Editor gehe, dann erscheint es vor mir.

Kann mir von A bis Z dies irgendjemand erläutern, wie ich das Startmakro überhaupt speichern kann?

Bin wohl zu kompliziert. Versuche nochmals mein Anliegen zu schildern:

In der Tabelle möchte ich die Übersicht haben, welche Zeilen Grün oder Rot sind. Sprich „Freigegeben“ (Grün) oder „inArbeit“ (Rot).
Die Tabelle ändert sich, ist lebendig.
Ich möchte statt die ganze jeweilige Zeile zu markieren und den Text zu einzufärben ein Makro haben. Welches mir bei der Änderung in Spalte H von „freigegeben“ auf „inArbeit“ auch gleich die ganze Zeile ändert. Würde mir einiges an Fleissarbeit ersparen.
Die Tabelle hat bis jetzt 50 Zeilen.

Hoffe ich habe Euch näher zu meinem Problem gebracht?
Also, wenn es Euch nicht gleich verschäucht habe, bin ich sehr dankbar für die hilfe. (phu…)

gruss

Ich habs versucht, bin jetzt ein bisschen frustriert, weil ich
das Marko nicht mal abspeichern konnte. Ja, bitte jetzt nicht
lachen!
Mit dem Markorekoreder schnell etwas aufgenommen, dann mit dem
von Carsten überschrieben, speichern. Und beim anwählen im
Excel von Extras - Marko - Marko ist es einfach nicht da
(sch…e)!
Mit der Hilfe hab ich es auch versucht, das geht genau gleich

  • ich verstehe das nicht. Wenn ich mit ALT + F11 dann in den
    VBA-Editor gehe, dann erscheint es vor mir.

Kann mir von A bis Z dies irgendjemand erläutern, wie ich das
Startmakro überhaupt speichern kann?

Hi Christian,
grundsätzlich, Makros mit Parametern wie hier Target erscheinen nie bei Extras–Makros–Makro…
Dies spezielle hier gehört nicht in ein normales Modul1 sondern in das Klassenmodul „Tabelle1“, also im Editor Doppelklick auf „Tabelle1“, dorthin den Code.
Gruß
Reinhard

Guten Morgen allerseits

ich habe den Tip von Reinhard gemacht. Ein Klassenmodul eröffnet und im Excel nachgeguckt obs funzt. Es schreibt mir nur in der Spalte H die schrift „freigeben“ grün. „inArbeit“ reagiert nicht. Komisches phänomen, einmal gehts, und einmal nicht.
Was mache ich nur falsch?

Hallo Christian.

Also dann hier mal von A-Z :

  • Öffne Deine Excel-Datei.
  • Klicke im Menü „Extras“ > „Makro“ auf „Visual Basic-Editor“.

Jetzt bist Du im Visual Basic-Editor

  • Klicke im Menü „Ansicht“ auf „Projekt-Explorer“.

  • Wenn sich der Bildschirm nicht ändert, ist der Projekt-Explorer bereits eingeblendet. Er befindet sich normalerweise oben links und enthält standardmäßig zumindest die folgenden Einträge :

    • VBAProject (Mappe1.xls)
    • Microsoft Excel Objekte
      DieseArbeitsmappe
      Tabelle1 (Tabelle1)

Da Du geschrieben hast, daß Du ein Klassenmodul hinzugefügt hast, existiert auch noch ein Ordner „Klassenmodule“ im Projekt-Explorer, der dieses Klassenmodul enthält. Da es, wie Du schreibst, nicht funktioniert, möchte ich dich bitten, es zu löschen. Das geht so:

  • Markiere das Klassenmodul durch einfaches Anklicken.
  • Klicke im Menü „Datei“ auf den Eintrag „Entfernen von Klasse1…“.
  • Bestätige die Meldung mit „Nein“.

Entferne bitte auch alles andere, was Du eventuell hinzugefügt hast und das keine Funktion zu haben scheint, sodaß Du am Ende lediglich noch „VBAProject (Mappe1.xls)“, „Microsoft Excel Objekte“ und die ganzen Tabellen im Projekt-Explorer hast.

So. Nun gehts weiter :

  • Doppelklicke im Projekt-Explorer auf den Namen der Tabelle, für die das Makro gelten soll, beispielsweise „Tabelle1 (Tabelle1)“.

  • Daraufhin öffnet sich das (hoffentlich leere) Code-Fenster.

  • Wenn das Code-Fenster nicht leer ist, weil Du möglicherweise schon was reingeschrieben hast, dann lösche bitte auch das.

  • Kopiere den folgenden Code in das Code-Fenster :

    Private Sub Worksheet_Change(ByVal Target As Range)
    On Error GoTo Fehler
    Select Case Target.Column 'Wähle Fall Bereich.Spalte
    Case 8 'Spalte H
    Select Case Target.Value
    Case „in Arbeit“
    Target.EntireRow.Interior.Color = vbRed
    Case „freigegeben“
    Target.EntireRow.Interior.Color = vbGreen
    Case Else
    Target.EntireRow.Interior.ColorIndex = xlNone
    End Select
    End Select
    Ende:
    Exit Sub
    Fehler:
    Resume Ende
    End Sub

Ein wenig zu dem Code : Es handelt sich hierbei um das „Worksheet_Change“-Ereignis, das jedesmal dann auftritt, wenn sich im Tabellenblatt was ändert, also auch, wenn Du in Zelle H40 „in Arbeit“ reinschreibst. Der Programmcode überprüft nun, ob die geänderte Zelle in Spalte H ist. ist dies der Fall, dann wird überprüft, ob in die Zelle „in Arbeit“ hineingeschrieben wurde oder „freigegeben“ oder ob irgendwas anderes drinsteht.

  • Klicke im Menü „Debuggen“ auf „Kompilieren von VBAProject“
  • Gehe nun zurück zu Excel und wähle das Tabellenblatt, auf dem das Makro ausgeführt werden soll.
  • Markiere irgendeine Zelle in Spalte H und trage dort ein: „in Arbeit“

Eigentlich sollte es funktionieren.

Soweit erstmal

Viele Grüße
Carsten

Wow, Super!

Herzlichen Dank Carsten und alle anderen!
Es funktioniert so wie ich es gedacht habe - Anschliessend noch drei Anliegen:

  • Grün ist mir zu dunkel -> Hellgrün wäre optimal
  • Statt die Spalte auszufüllen, kann ich auch nur den Text ROT haben?
  • Wie gehts, wenn ich beides möchte? Also, Text dunkelgrün und Fülleffekt Hellgrün?

Meiner Arbeitsmethodik habt Ihr sehr geholfen. Besten Dank nochmals - Ihr seit wirklich EXPERTEN !!!

Schönes Knochenende,

gruss, chregu [Hopp Schwiiiizzz :wink:]

Hallo Christian.

Um die Schriftfarbe zu ändern, kannst Du folgenden Code benuzten:

Target.EntireRow.Font.Color = vbGreen

Um eine spezielle benutzerdefinierte Farbe einzustellen, ersetze vbGreen bzw. vbRed durch folgendes Code-Prinzip:

RGB(0, 0, 0)

RGB steht für Red, Green und Blue, die Zahlenwerte geben die jeweiligen Anteil an. RGB(0, 0, 0) ist Schwarz, RGB(255, 255, 255) ist weiß. Damit kannst Du Dir jede erdenkliche Farbe zusammenbasteln.

Du könntest anstatt von vbGreen auch das hier verwenden:

QBColor(0)

bis

QBColor(15)

Oder Du verwendest anstatt von „.Color = vbGreen“ das hier:

ColorIndex = 4

Die Werte der ColorIndex-Eigenschaft kenn ich nicht auswendig. Zeichne ein Makro auf, in dem Du eine Zelle farbig machst, dann kommst Du an die Werte.

Um die Text-Farbe bzw. die Zell-Farbe wieder auf den Standardwert zurückzusetzen, verwende das Code-Prinzip hier:

.ColorIndex = xlAutomatic

Hoffe, das hilft Dir weiter.

Viele Grüße
Carsten