In einer Listbox mit Mehrfachauswahl soll ein Makro prüfen, ob die den Einträgen zugeordneten Variablen, den gleichen Wert haben!
Ist der Wert eines Eintrages nicht gleich, dem zuerst ausgewähltem, dann soll dieser deselektiert werden!
Das Makro macht seine Sache gut, bis auf einen Haken! Wenn der letzte ausgewählte Eintrag nicht mit dem zuerst gewähltem
übereinstimmmt, wird dieser im Dialog nicht deselektiert, sondern bleibt markiert!
Das merkwürdige ist, das die Aufhebung der Markierung nur im aktiven Dialogfenster nicht vorgenommen wird! Im Dialogblatt (dort, wo man den Dialog entwirft) wird die Markierung aufgehoben!
WER HAT EINE IDEE? Screenupdating hilft auch nix.. :-(
Hier das Makro:
Öffentlich RecSelDim Als Ganz
Öffentlich RecSel() Als Ganz
Öffentlich RecSelFirst Als Ganz
Öffentlich Zap(6) Als ZeichenF
Sub TestMakro() ' 1) zuerst ausführen
Setze Dlg = DieseArbeitsmappe.DialogblattListe(1)
Mit Dlg.ListenfeldListe(1)
.AlleEinträgeEntfernen
.EintragHinzufügen Text:="Test1"
Zap(1) = "Test1"
.EintragHinzufügen Text:="Test2"
Zap(2) = "Test2"
.EintragHinzufügen Text:="Test1"
Zap(3) = "Test1"
.EintragHinzufügen Text:="Test4"
Zap(4) = "Test4"
.EintragHinzufügen Text:="Test2"
Zap(5) = "Test2"
.EintragHinzufügen Text:="Test1"
Zap(6) = "Test1"
Ende Mit
Ende Sub
Sub TestListBox() ' 2) Der Listbox zuordnen
Dim i Als Ganz
Dim RecSelLastOK Als Boolesch
Setze Dlg = DieseArbeitsmappe.DialogblattListe(1)
RecSelLastOK = Wahr
RecSelDim = 0
Redim RecSel(RecSelDim)
Mit Dlg.ListenfeldListe(1)
Für i = 1 Bis .Listeneinträge
Wenn .Ausgewählt(i) = Wahr Dann
RecSelDim = RecSelDim + 1
Redim Erhaltend RecSel(RecSelDim)
RecSel(RecSelDim) = i
Ende Wenn
Nächste i
Ende Mit
Wenn RecSelDim > 1 Dann
Für i = 1 Bis RecSelDim
Wenn Zap(RecSelFirst) <> Zap(RecSel(i)) Dann
Dlg.ListenfeldListe(1).Ausgewählt(RecSel(i)) = Falsch
Ende Wenn
Nächste i
SonstWenn RecSelDim = 1 Dann
RecSelFirst = RecSel(1)
Ende Wenn
Ende Sub
Vielen Dank im voraus!!!
mfg Thomas