Live-Forum - Die aktuellen Beiträge
Datum
Titel
29.03.2024 13:14:12
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
612to616
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
612to616
612to616
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Farbe als Bedingung

Farbe als Bedingung
18.05.2005 10:49:12
Tinu
Liebe VBA-Spezialisten
Ich möchte ein Makro abhängig machen von der Farbe der angewählten Zellen. Das Problem ist nun, dass ich mehrere Zellen gleichzeitig anwählen will und die Zellen unterschiedliche Farben haben können. Das Makro soll dann ausgeführt werden, wenn alle Zellen entweder color index 8, 36 oder eine Kombination der beiden haben. Die Bedingung "If Selection.Interior.ColorIndex = 8" ist aber nur dann erfüllt, wenn alle Zellen die Farbe 8 haben (genau so natürlich mit 36). Eine ODER-Verknüpfung (8 oder 36) bringt also nichts, weil beide Bedingungen nicht erfüllt sind, wenn beide Farben vorkommen. Wie könnte man das lösen?
Für Hilfe wäre ich sehr dankbar!
Grüsse
Tinu

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Farbe als Bedingung
18.05.2005 11:15:22
Volker
Hallo Tinu,
meines Wissens bezieht sich selection.colorindex auch bei mehreren markierten Zellen nur auf die Zelle links oben.
Du könntest eine Schleife über deine Selection laufen lassen:
(das auszuführende nenne ich mal dein_makro()
mal ein Ansatz:

Sub gleiche_farbe()
dim zelle as range
if Selection.Interior.ColorIndex = 8 then
for each zelle in selection
if zelle.Interior.ColorIndex <> 8 then goto weiter
end if
next
dein_makro   'Aufruf deines Makros
else if Selection.Interior.ColorIndex = 36 then
for each zelle in selection
if zelle.Interior.ColorIndex <> 36 then goto weiter
end if
next
dein_makro   'Aufruf deines Makros
end if
weiter:
End Sub

Geht vielleicht noch eleganter, aber sollte klappen.
Gruß
Volker
Anzeige
AW: Farbe als Bedingung
18.05.2005 11:26:04
Reinhard
Hallo Volker,
wenn schon so dann so:

Sub gleiche_farbe()
dim zelle as range
for each zelle in selection
if zelle.Interior.ColorIndex <> 8 or zelle.Interior.ColorIndex <> 36 then goto weiter
end if
dein_makro   'Aufruf deines Makros
weiter:
End Sub

Gruß
Reinhard
hab den bug schon bemerkt. (o.T.)
18.05.2005 11:29:54
Volker
.
Korrektur
18.05.2005 11:28:54
Volker
Hallo Tinu,
da hab ich wohl gepennt. Das Makro soll laufen, wenn keine Farbe außer "8" oder "36" vorkommt, gelle.
Dann wird die Sache kürzer:

Sub gleiche_farbe()
dim zelle as range
if Selection.Interior.ColorIndex = 8 or Selection.Interior.ColorIndex = 36 then
for each zelle in selection
if zelle.Interior.ColorIndex <> 8 or zelle.Interior.ColorIndex <> 36 then goto weiter
end if
next
dein_makro   'Aufruf deines Makros
end if
weiter:
End Sub

Wobei Reinhards Variante auch nicht schlecht ist.
Gruß
Volker
Anzeige
AW: Farbe als Bedingung
18.05.2005 11:49:07
Tinu
Hallo Volker
Vielen Dank für Deine rasche Antwort.
Leider bringt sie noch nicht den gewünschten Erfolg.
Zuerst habe ich Deinen Code 1:1 übernommen. Dann schimpft das Programm bei den "End Ifs", darum hab ich sie rausgenommen. Ausserdem wird das "Else If" nicht akzeptiert. Ich hab's durch "If" ersetzt. Mein Code sieht nun also folgendermassen aus:
Dim zelle As Range
If Selection.Interior.ColorIndex = 8 Then
For Each zelle In Selection
If zelle.Interior.ColorIndex 8 Then GoTo weiter
'End If
Next
' mein Makro
If Selection.Interior.ColorIndex = 36 Then
For Each zelle In Selection
If zelle.Interior.ColorIndex 36 Then GoTo weiter
'End If
Next
'mein Makro
weiter:
End If
End Sub
Das Resultat ist, dass das Makro ausgeführt wird, wenn alle angewählten Zellen Farbe 8 haben. Sonst tut sich gar nichts.
Gruss
Tinu
Anzeige
AW: Farbe als Bedingung
18.05.2005 11:54:44
Tinu
Hallo Volker und Reinhard
hab gar nicht bemerkt, was da alles reinkam, während ich bastelte ;-)
Tatsache ist, dass es mit Euerer Hilfe jetzt klappt und ich bedanke mich ganz herzlich dafür.
Gruss
Tinu
gern geschehen (o.T)
18.05.2005 12:09:21
Volker
.
AW: Farbe als Bedingung
18.05.2005 11:18:46
Reinhard
Hallo Tinu,

Sub tt()
For Each Zelle In Selection
If Zelle.Interior.ColorIndex = 1 Or Zelle.Interior.Color = 2 Then anz = anz + 1
Next Zelle
If anz = Selection.Cells.Count Then MsgBox "jepp"
End Sub

Gruß
Reinhard

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige