Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1968to1972
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Bei gleichem Befehl unterschiedliches Ergebnis

Bei gleichem Befehl unterschiedliches Ergebnis
13.03.2024 21:48:51
GML1986
Hallo zusammen,
ich würde gerne einen Code schreiben, der bei mehrmaligem Ausführen eines Befehls jeweils ein anderes Ergebnis hervorbringt.

In meinem Beispiel:

Das Makro ändert die Schriftfarbe einer Zelle in blau.
Wenn ich das Makro noch einmal ausführe, soll die Schriftfarbe grün werden.
Danach schwarz.
Danach wieder blau.
usw

Wie schreibe ich das bzw. welche Funktionen verwende ich da? Soweit ich recherchiert habe, handelt es sich um keine Schleifen.
Vielen Dank schon einmal im Voraus :)

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Bei gleichem Befehl unterschiedliches Ergebnis
13.03.2024 22:50:45
schauan
Hallöchen,

im Prinzip z.B. so:
Sub test()

Cells(1, 1).Font.Color = Cells(1, 1).Font.ColorIndex + 1
End Sub


hier wird bei dem Farbindex der Zelle immer eins dazugezählt.

Wenn Du bestimmte Farben wills, müsstest Du Dir eine Liste der Farben erstellen, z.B. anhand der Nummern des Colorindex, die dann der Reihe nach durchgegangen wird.
Übersichten mit Nummern findest Du im Netz, such Dir ein paar raus und dann schauen wir weiter.
AW: Bei gleichem Befehl unterschiedliches Ergebnis
14.03.2024 01:50:23
Daniel
Hi
das folgende Makro rolliert bei jedem Klick die im Array angegebenen Farben durch:

Sub test()

Dim arr
Dim x
arr = Array(vbBlue, vbGreen, vbBlack)
With Cells(1, 1).Font
x = Application.Match(.Color, arr, 0)
If IsError(x) Then x = 0
x = x - 1
x = (x + 1) Mod (UBound(arr) + 1)
.Color = arr(x)
End With
End Sub

Gruß Daniel
Anzeige
AW: Bei gleichem Befehl unterschiedliches Ergebnis
14.03.2024 08:10:34
schauan
Hallöchen,

1)
mein Makro wird wahrscheinlich dann nicht funktionieren, wenn die Schriftfarbe keine der definierten Farben ist. Das müsste man dann noch verarbeiten.
2)
Wenn Du am Ende des Arrays nochmal den ersten Index nimmst, dann braucht man die Fallunterscheidung für das Ende nicht.
3)
Hier mal noch ein Einzeiler, für einstellige Indizees:
Sub Faerben_2()

Cells(1, 1).Font.ColorIndex = Mid("135791", InStr("135791", Cells(1, 1).Font.ColorIndex) + 1, 1)
End Sub

Die Farbindzees sind hier als Zeichenkette zusammengefasst. Hier ist dann auch wieder am Ende die erste Farbe. Vorteil ist hier auch gleich, wenn der Farbindex der Zelle nicht enthalten ist, wird er auf den ersten Wert gesetzt. Verwendest Du mehrstellige Indizees, müsste man noch eine Fallunterscheidung für die Werte 10 bzw. ab 10 programmieren.
Anzeige
AW: Bei gleichem Befehl unterschiedliches Ergebnis
13.03.2024 23:03:42
schauan
Hallöchen,

das wäre dann im Prinzip so:

Sub test()

'Variablendeklarationen
Dim arrColors, iCnt%
'Farbliste bilden
arrColors = Array(1, 3, 5, 7, 9)
'Schleife ueber alle Elemente der Farbliste
For iCnt = 0 To UBound(arrColors)
'Wenn die Farbe die letzte der Liste ist, dann die erste nehmen
If iCnt = UBound(arrColors) Then
Cells(1, 1).Font.ColorIndex = arrColors(0)
Exit For 'Schleife verlassen
'Wenn die Farbe nicht die letzte der Liste ist, dann die naechste nehmen
ElseIf Cells(1, 1).Font.ColorIndex = arrColors(iCnt) Then
Cells(1, 1).Font.ColorIndex = arrColors(iCnt + 1)
Exit For 'Schleife verlassen
'Ende Wenn die Farbe ...
End If
'Ende Schleife ueber alle Elemente der Farbliste
Next
End Sub
Anzeige
AW: Bei gleichem Befehl unterschiedliches Ergebnis
14.03.2024 00:05:10
GML1986
Wow, vielen Dank für die schnelle Antwort.

Ich habe den Code grundsätzlich nachvollziehen können und mag die Logik. Dass ich nach jeder Bedingung die Schleife verlassen muss, liegt wohl an der if-Logik schätze ich? Die Farbcodes kann ich ja anhand der Liste selbst heraussuchen und in meinem Fall nur 3 Elemente in die Arrow-Funktion legen, da ich nur mit 3 Farben arbeiten möchte.

Aktuell funktioniert es bei mir so nicht, ich werde aber nach dem Fehler suchen und mich ggf. nochmal melden.

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige