Excel 2007 Zellenfarbe durch Klick ändern

Liebe Fachspezialisten

Ich habe hier einen Code, der es mir erlaubt mit Klick auf eine Zelle die Farbe der Zelle zu wechseln:

***

Private Sub worksheeT_selectionchange(ByVal target As Range)
Dim rngWirk As Range, rngC As Range
Set rngWirk = Range(„o10,o12,o14,o16,o18,o20,o22,o24,o26,o28,o30,o32,o34,o36“)
If Intersect(target, rngWirk) Is Nothing Then Exit Sub
For Each rngC In Intersect(target, rngWirk)
With rngC.Interior
If .ColorIndex = 15 Then .ColorIndex = 22
End With
Next rngC
End Sub

***

Nun möchte ich jedoch, dass die Zellenfarbe bei erneutem anklicken wieder von ColorIndex = 3 in den ColorIndex = 0 zurück wechselt.

Für Eure Hilfe bin ich sehr dankbar

Liebe Grüsse

Sascha

Das sollte doch trivial sein: Beim Click auf die Zelle den Colorindex abfragen. Falls 0 dann auf 3, sonst auf 0 setzen (Flip-Flop).
Viel Erfolg
Rainer

Lieber Rainer

Flip-Flop für Leute mit VBA Kenntnisse, für einen der aus dem Gesundheitswesen kommt mit 0 VBA Erfahrung eine riesige Herausforderung :wink:

Die Lösung sieht trivial aus, jedoch könnte ich daraus keinen Code einbauen. Dürfte ich Dich bitten, mir einen fertigen Code anzubieten (also eingebunden in den bestehenden)?

Vielen herzlichen Dank und ein schönes Wochenende

Sascha

Dürfte ich Dich bitten, mir einen fertigen Code anzubieten: Radio Eriwan, im Prinzip „NEIN“. Dies ist ein Forum für Hilfe und nicht zum Erstellen von Lösungen, dazu gibt es Beraterfirmen. Außerdem geht das nicht, Deine Anfrage enthält nur einen Baustein aus dem gesamten Code (ein parametrisiertes Unterprogramm), die Umgebung kenne ich nicht.
Trotzdem ein kleiner Tipp: der Code enthält die Anweisung „If .ColorIndex = 15 Then .ColorIndex = 22“, das ist kein FlipFlop: es fehlt der Else-Zweig zum Hin-und Herwechseln, also
„If .ColorIndex = 15 Then .ColorIndex = 22 Else .ColorIndex = 15“. Jetzt wird jedes mal zwischen den Farben 15 und 22 gewechselt (nicht aber zwischen 0 und 3 laut Anfrage).
Viele Erfolg
Rainer

Grüezi Sascha

Private Sub worksheeT_selectionchange(ByVal target As Range)
Dim rngWirk As Range, rngC As Range
Set rngWirk =
Range(„o10,o12,o14,o16,o18,o20,o22,o24,o26,o28,o30,o32,o34,o36“)
If Intersect(target, rngWirk) Is Nothing Then Exit Sub
For Each rngC In Intersect(target, rngWirk)
With rngC.Interior
If .ColorIndex = 15 Then .ColorIndex = 22
End With
Next rngC
End Sub

Nun möchte ich jedoch, dass die Zellenfarbe bei erneutem
anklicken wieder von ColorIndex = 3 in den ColorIndex = 0
zurück wechselt.

Na, dann füge diese Zeile mit einer weiteren If-Anweisung wie sie schon im Code drin steht dem Code hinzu.

BTW:
Der Code färbt aber keine Zellen mit dem ColorIndex =3 ein…

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Lieber Rainer

Ich habe dafür Verständnis. Ist jedoch keine komerzielle Anfrage sondern lediglich um meinen Alltag einfacher zu gestalten damit ich in meiner to-do Liste den Überblick behalte. Ich konnte die Aufgabe nun lösen und danke Dir vielmals für Deine Zeit und die Hilfe.

Liebe Grüsse

Sascha

Lieber Thomas

Auch Dir herzlichen Dank für Deine Mithilfe. Ich konnte durch Rainers Hilfe mein Problem lösen :wink:

Liebe Grüsse

Sascha

Hallo Sascha,
ersetze die ‚if .ColorIn…‘ durch
Select Case .ColorIndex
Case 15
.ColorIndex = 22
Case 3
.ColorIndex = 0
End Select
hier kannst du dann (pro Klick) von einem Zustand zu einem anderen wechseln

LG
WW

hey sascha

ich habe den code nicht im excel ausprobiert und kann deshalb nur schätzen was er macht.
du sagst du wechselst mit dem dem befehl von ColorIndex 0 auf 3.
wechselt mit dem befehl
If .ColorIndex = 15 Then .ColorIndex = 22
die farbe nicht von 15 auf 22?
wenn ja, dann versuch doch mal mit einer ELSE IF den umgekehrten weg zu programmieren.

Gruss marc

Hallo Sascha,

frag doch einfach vorher ab, welche die aktuelle Farbe ist und in Abhängigkeit davon ändere diese.
Ich würde dies mit einem „Select case“ machen.
Also frag erst die aktuelle Farbe ab
(aktfarbe = rngC.Interior.ColorIndex)
und dann machst Du
select case aktfarbe
case is = 0
rngC.Interior.ColorIndex = 3
case is = 3
rngC.Interior.ColorIndex = 0
end select

Das musst Du nun irgendwie in Deinen Code einbauen.
Ich hoffe, geholfen zu haben.
Gruß,
Ptonka (=Jochen)

Private Sub worksheeT_selectionchange(ByVal target As Range)

Dim rngWirk As Range, rngC As Range
Set rngWirk =
Range(„o10,o12,o14,o16,o18,o20,o22,o24,o26,o28,o30,o32,o34,o36“)
If Intersect(target, rngWirk) Is Nothing Then Exit Sub
For Each rngC In Intersect(target, rngWirk)
With rngC.Interior
If .ColorIndex = 15 Then .ColorIndex = 22
End With
Next rngC
End Sub

Sorry, ich habe dein Problem nicht auf Anhieb verstanden und bin durch Jahresanfangarbeiten gerade voll im Stress. Ich hoffe, dir hat zwischenzeitlich jmd. geholfen.
Gruß
M.W.

Hallo Sascha,
die Lösung klingt nicht besonders schwer. Du schreibst jedoch, dass die Col-ID von 3 auf 0 zurück soll, in deinem Codebeispiel ist es jedoch der Wechsel von 15 auf 22.
Prüf das bitte noch einmal und schreib genau, wie es sein soll.
Ich muss dir aber sagen, dass du die Zelle sowieso zunächst verlassen musst, um mit dem Ereignis „Sub worksheeT_selectionchange“ zu arbeiten.

Hallo,

hier die Lösung:
Private Sub worksheeT_selectionchange(ByVal target As Range)
Dim rngWirk As Range, rngC As Range
Set rngWirk = Range(„o10,o12,o14,o16,o18,o20,o22,o24,o26,o28,o30,o32,o34,o36“)
If Intersect(target, rngWirk) Is Nothing Then Exit Sub
For Each rngC In Intersect(target, rngWirk)
With rngC.Interior
If .ColorIndex = 15 Then
.ColorIndex = 22
ElseIf .ColorIndex = 22 Then
.ColorIndex = 0
End If
End With
Next rngC
End Sub

MfG
GHuhle

Liebe Fachspezialisten

Ich habe hier einen Code, der es mir erlaubt mit Klick auf
eine Zelle die Farbe der Zelle zu wechseln:

***

Private Sub worksheeT_selectionchange(ByVal target As Range)

Dim rngWirk As Range, rngC As Range

Set rngWirk =
Range(„o10,o12,o14,o16,o18,o20,o22,o24,o26,o28,o30,o32,o34,o36“
)

If Intersect(target, rngWirk) Is Nothing Then Exit Sub

For Each rngC In Intersect(target, rngWirk)

With rngC.Interior

If .ColorIndex = 15 Then .ColorIndex = 22

End With

Next rngC

End Sub

***

Nun möchte ich jedoch, dass die Zellenfarbe bei erneutem
anklicken wieder von ColorIndex = 3 in den ColorIndex = 0
zurück wechselt.

Für Eure Hilfe bin ich sehr dankbar

Liebe Grüsse

Sascha