VBA Excel wie kann ich eine If than Einbauen

Guten Tag
Ich habe ein Dienstplan auf „Blatt1“ erstellt. In verschiedenen Zellen steht ein Buchstabe welche eine zugeordnete Farbe hat. Auf „Blatt2“ ist eine Zusammenfassung des Dienstplans. Ich habe ein VBA programm geschrieben indem ich auf Mausklick die Farbe automatisch den Wert (Zelle) der Farbe zuordnet.

Nun mein Problem auf „Blatt2“ wird eine Farbe manuell auf ein Wert(Zelle)ausgefüllt. Nun wenn man mein Makro startet wird die Farbe auf die Anfangsfarbe wieder zurückgesetzt. Wie kann ich verhindern dass eine Farbe, welche manuell geändert wurde nicht geändert wird wenn ich mein Macro starte. Wer kann mir helfen ein „if than“ in mein Macro einzufuegen.

Nachstehendes Macro habe ich.

Option Explicit

Private Sub restore_Click()

Dim cell As Range

For Each cell In Range(„b5:af24“)
Select Case cell

Case Is = „F“
cell.Interior.ColorIndex = xlNone
cell.Font.ColorIndex = 1

Case Is = „R“
cell.Interior.ColorIndex = 4
cell.Font.ColorIndex = 1

Case Is = „C“
cell.Interior.ColorIndex = 27
cell.Font.ColorIndex = 1

Case Is = „J“
cell.Interior.ColorIndex = 33
cell.Font.ColorIndex = 1

Case Else
cell.Interior.ColorIndex = xlNone
cell.Font.ColorIndex = 0

End Select

Next

End Sub

Ich denke mal, dass das mit deinem Code den du bis jetzt hast nicht s einfach wird. Außer, wenn du beim manuell einfärben andere Farben verwendest, als beim Makro.

Also z.b. bei Makro einfärben rgb Farben verwenden und für das manuelle die standartfarben. Dann kannst du vorher abfragen, ob es eine Farbe zugewiesen bekommen hat, oder das über das Makro bekommst.

Oder advanced: du schreibst dir eine eigene klasse

Liebe grüße
OVM

Hi,
sorry, ich verstehe die Frage nicht.

Nehmen wir mal an, in B5 steht ein F.
Und nehmen wir an, die Hintergrundfarbe ist Grün.
Wenn dein jetziges Makro läuft, wird die Hintergrundfarbe auf xlNone gestellt. So weit ok.

Du willst das jetzt aber unterbinden, sofern die Hintergrundfarbe manuell geändert worden war, mit einem „If Than“ (besser: „If … Th e n …“).
Was soll denn bei dem If abgefragt werden? Anders ausgedrückt:
Woran sollte ein Programm erkennen können, ob eine Farbe manuell gesetzt wurde?
Wann soll das Programm die Farbe so lassen, wann neu setzen?
Was ist das Kriterium?

Ich glaube nicht, dass das geht. Oder habe ich das jetzt ganz falsch verstanden?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Salut,
Meine VBA Kenntnisse sind begrenzt, darum dachte ich mann könnte einfach eine If then einbauen, die zuerst Ueberprueft welche Farbe die Zelle hat.Sie haben die Frage richtig verstanden.
Also in B5 steht ein F die Hintergrundfarbe ist weiss, nun wird diese manuell schwarz gefaerbt. Beim ablaufen des Macros soll es nur die Zellen ihre Farbe zuordnen welche nicht schwarz sind.
Ich bedanke mich für ihre Bemühungen.

Hi,

sorry, ich verstehe die Frage nicht.

Nehmen wir mal an, in B5 steht ein F.
Und nehmen wir an, die Hintergrundfarbe ist Grün.
Wenn dein jetziges Makro läuft, wird die Hintergrundfarbe auf
xlNone gestellt. So weit ok.

Du willst das jetzt aber unterbinden, sofern die
Hintergrundfarbe manuell geändert worden war, mit einem „If
Than“ (besser: „If … Th e n …“).
Was soll denn bei dem If abgefragt werden? Anders ausgedrückt:
Woran sollte ein Programm erkennen können, ob eine Farbe
manuell gesetzt wurde?
Wann soll das Programm die Farbe so lassen, wann neu setzen?
Was ist das Kriterium?

Ich glaube nicht, dass das geht. Oder habe ich das jetzt ganz
falsch verstanden?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

wenn nicht schwarz
Hi,
so ganz klar ist mir das Kriterium noch immer nicht.
Verstanden habe ich nun, dass eine Zelle mit schwarzer Hintergrundfarbe
nicht durch das Makro geändert werden soll.

Das ginge so:

Option Explicit

Sub restore\_Click()
 Dim rngC As Range

 For Each rngC In Range("B5:AF24")
 With rngC
 If .Interior.ColorIndex 1 Then 'wenn nicht schwarz
 Select Case .Value
 Case "F"
 .Interior.ColorIndex = xlNone
 .Font.ColorIndex = 1
 Case "R"
 .Interior.ColorIndex = 4
 .Font.ColorIndex = 1
 Case "C"
 .Interior.ColorIndex = 27
 .Font.ColorIndex = 1
 Case "J"
 .Interior.ColorIndex = 33
 .Font.ColorIndex = 1
 Case Else
 .Interior.ColorIndex = xlNone
 .Font.ColorIndex = 0
 End Select
 End If
 End With
 Next rngC
End Sub

Das Makro ändert die Farbe aber, wenn die Zelle manuell z. B. grün eingefärbt wurde.
Ist eben nicht schwarz.

Hast du das so gemeint?

Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort

Woher soll das Macro wissen, dass händisch manipuliert wurde? Entweder:

  • das Macro nicht erneut starten
  • oder es mit einem Parameter versehen Erst-/Neustart
  • oder die händisch gesetzten Farben ausnehmen
    Übrigens, If Then …
    Viel Erfolg
    Rainer

Hallo,

wenn es für VBA ist, schau einmal in die Hilfe de Visual BAsic editors, da werden Beispiele gegeben für if … then … abfragen,

Gruß

Hallo,
JA, so habe ich dass gemeint es funktioniert so wie ich mir das vorgestellt habe. Nächstes mal werde ich mich verständlicher und ausführlicher Ausdrücken. Ich bedanke mich nochmals für ihre Mühe und Geduld.
Tausend Dank und mit freundlichen Grüssen.

Hallo klingonlex

Habe leider z.Z. eine Menge Arbeit mit VBA und mit Anfragen.
Ich hoffe die anderen können dir weiter helfen.
Tut mir lied.

Gruß

hallo klingonlex
so
If 1