hallo, ich bins wieder )
diesmal mit einer ganz anderenn frage (ja ja):
ich benötige eine if then anweisung in der die anzahl der bedingungen dynamsich sind:
also
r = ActiveCell.Range
If r = $A$1 or r = $A$2 or r = $A$3 etc then MsgBox(„Juhu“)
die anzahl wird erhöht oder veringert durch auswahl des users.
das heist ich muss wahrscheinlich ein datenfeld (array) anlegen in dem die werte gespeichert werden und dann über eine weiteren variablen innerhalb der if then anweisung abgeglichen werden, oder?
aber wie?
also: Dein Ansatz mit den Strings funktioniert leider nicht, weil Du da Äpfel mit Birnen vergleichst: der String bleibt ein String und kann nicht mit der Adresse vergleichen werden. Excel ist auch nicht so nett und „decodiert“ den String wieder in eine If … or … etc. Kette.
Du musst anders vorgehen. Das mit dem Array ist schon gar keine schlechte Idee. Aber es geht noch eleganter und einfacher:
For Each zelle In Range(„A1“, „A10“)
If Selection.Address = zelle.Address Then MsgBox „JUHU“
Next
Das war’s schon. Mit der For…Each-Schleife kannst Du die einzelnen Zellen eines Bereichs durchgehen (hier A1-A10). Jede Zelladresse dieses Bereichs vergleichst Du jetzt mit der Adresse deiner Selection. Bei Übereinstimmung gibt’s ein „JUHU“.
Den Bereich kannst Du beliebig anpassen und hier eben auch dynamisch vorgehen, etwa
For Each Zelle in Range(„A“ & anfang, „A“ & ende)
wenn anfang zum Beispiel 5 und ende 20 ist, wird A5-A20 durchsucht.
danke für deine antwort, das zu allererst!
das problem bei dem lösungsvorschlag ist nur, das eben nicht
linear ausgewählt wird, sonedrn mal A1, F8, H7, 12G etc. also
absolut nicht in reihenfolge. und dann sollen auch wieder welche
aus der liste gelöcht werden können…
somit benötige ich ein datenfeld dessen datenliste beliebig erweiterbar ist…
geht das überhaupt?
gruß
herpes
ps: aber wie verbinde ich strings innerhalb einer variablen?
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]
neuer Versuch: ist zwar etwas komplizierter, kann aber beliebige Bereiche abdecken:
Dim c As New Collection
Sub test()
’ Zellen hinzufügen:
’ AddCell „“
AddCell „A1“
AddCell „B2“
AddCell „C3“
’ Test: Alle Zellen im Bereich Rot färben
For Each z In c
z.Interior.ColorIndex = 3
Next
’ Zellen löschen:
’ RemCell „“
RemCell „B2“
’ Test: Verbleibende Zellen Grün färben
For Each z In c
z.Interior.ColorIndex = 4
Next
’ Test: Aktive Zelle in Feld?
For Each z In c
If z.Address = Selection.Address Then MsgBox „JUHU“
Next
End Sub
Private Sub AddCell(r As String)
c.Add Range®, r
End Sub
Private Sub RemCell(r As String)
c.Remove r
End Sub
Probier’s mal aus. Zellen werden mit AddCell hinzugefügt und mit RemCell entfernt. Der Code oben soll Dir nur als Beispiel dienen, hoffe, Du kannst ihn Deinen Wünschen entsprechend anpassen.
'hi sculpture…
prima, mal wieder…hab nur noch ein paar fragen:
': Dim c As New Collection
'okay, hier wird ein gruppe von objekten erstellt, der dann über AddCell(r As String) objekte hinzugfügt werden…(nur wann wird Addcell ausgeführt??)
Sub test()
AddCell „A1“
AddCell „B2“
AddCell „C3“
'warum werden hier die zellen aufgelistet? die sollen doch dynamisch hinzugefügt werden…
For Each z In c
z.Interior.ColorIndex = 3
Next
'wo kommt denn plötzlich z her? wo wird z gesetzt? bzw was zählt z?
Private Sub AddCell(r As String)'wodurch wird r „gefüllt“??
c.Add Range®, r ’
End Sub
das ist ganz schön schwierig, aber ich hoffe schaffe das…
sorry, wollte Dir keine Probleme mit dem Code bereiten. Der sollte nur als Beispiel dienen, wie man sowas machen kann!
': Dim c As New Collection
'okay, hier wird ein gruppe von objekten erstellt, der dann
über AddCell(r As String) objekte hinzugfügt werden…(nur
wann wird Addcell ausgeführt??)
Genau dann, wenn Du Zellen hinzufügen willst. Wenn Dein Bereich z.B. die Zellen „A1“, „B5“ und „X7“ enthält, musst Du AddCell 3x ausführen.
Sub test()
AddCell „A1“
AddCell „B2“
AddCell „C3“
'warum werden hier die zellen aufgelistet? die sollen doch
dynamisch hinzugefügt werden…
Dies ist ein Beispiel
For Each z In c
z.Interior.ColorIndex = 3
Next
'wo kommt denn plötzlich z her? wo wird z gesetzt? bzw was
zählt z?
Auch dies soll Dir nur die Vorgehensweise mit Collection-Objekten verdeutlichen und hat nichts mit Deinem Problem zu tun!!
Also herpes, ich schlage vor, Du mailst mir mal, was GENAU Du machen willst, wann Du welche Zellen warum hinzufügen willst, dann kann ich Dir wahrscheinlich viel besser helfen, v.a. was die dynamische Verwaltung dieser Collection betrifft.