Hallo Nemesis,
du hättest schon schreiben müssen, dass du Multiselect-Listboxen verwendest! Ich mag es nicht, wenn ich einige Zeit verwende, um für jemanden eine Lösung zu entwerfen, und dann zur Kenntnis nehmen muss, dass die Lösung nicht funktioniert - nicht etwa, weil sie den geforderten Spezifikationen nicht entspricht, sondern weil der Fragende falsche oder unvollständige Spezifikationen gegeben hat. Wenn dir das mit einem Softwarehaus passiert wäre, müsstest du zweimal zahlen. Mir nimmst du die Zeit weg, die ich vielleicht für andere Hilfesuchende verwenden könnte. Bemühe dich in Zukunft, deine Anforderung wirklich prazise und vollständig in fehlerfreiem Deutsch und verständlich niederzuschreiben! Dann wird dir auch schneller geholfen.
Bei Multiselect-Listboxen wird das Click-Ereignis nicht ausgelöst, weil ihr Value immer 'Null' ist. Deshalb muss man sich etwas anderes einfallen lassen.
Private Sub ListBox1_Mouseup(ByVal Button As Integer, ByVal Shift As Integer, _
ByVal X As Single, ByVal Y As Single)
c = ""
For j = 0 To ListBox1.ListCount - 1
a = ListBox1.List(j)
If ListBox1.Selected(j) = True Then
b = vbCrLf + "Wert " + CStr(a) + " in ListBox2 nicht vorhanden."
For i = 0 To ListBox2.ListCount - 1
If ListBox2.List(i) = a Then
ListBox2.Selected(i) = True
b = ""
End If
Next i
c = c + b
b = vbCrLf + "Wert " + CStr(a) + " in ListBox3 nicht vorhanden."
For i = 0 To ListBox3.ListCount - 1
If ListBox3.List(i) = a Then
ListBox3.Selected(i) = True
b = ""
End If
Next i
c = c + b
Else
For i = 0 To ListBox2.ListCount - 1
If ListBox2.List(i) = a Then
ListBox2.Selected(i) = False
End If
If ListBox3.List(i) = a Then
ListBox3.Selected(i) = False
End If
Next i
End If
Next j
If Not (c = "") Then MsgBox c
End Sub
Nemesis schrieb am 05.06.2009 08:33:26:
Hi nochmal!
Hier mal mein Ansatz für eine "for each" Lösung (funktioniert allerdings nicht):
Private Sub Listbox2_Click()
Eintrag_Markieren (Listbox2.Object)
End Sub
Function Eintrag_Markieren(Aktuelle_Listbox As Object)
For i = 0 To Aktuelle_Listbox.ListCount - 1
If Aktuelle_Listbox.Selected(i) = True Then
For Each Listbox In Tabelle1.Shapes
For j = 0 To Listbox.ListCount - 1
If Aktuelle_Listbox.List(i) = Listbox.List(j) Then
Listbox.Selected(j) = True
Exit For
End If
Next
Next
End If
Next
End Function
Fehlermeldung bei "Listbox.ListCount" --> "Objekt unterstützt diese Eigenschaft oder Methode nicht"
--> weiß einer weshalb das nicht funktioniert?
--> Wie muss der Code geändert werden, damit es funktioniert?
Gruß, Nemesis
*************************************************************
Nemesis schrieb am 05.06.2009 07:40:49:
Hallo Holger!
Für die Markierung von gleichen Einträgen habe ich dein Vorschlag "leicht" abgeändert.
Danke aber, dass du mich auf diesen Weg gebracht hast ^^
Hier mein Code, bezogen auf 2 Listboxen (suche nun noch eine vor Lösung für alle Listboxen in meinem Sheet):
For i = 0 To Listbox1.ListCount - 1
If Listbox1.Selected(i) = True Then
For j = 0 To Listbox2.ListCount - 1
If Listbox1.List(i) = Listbox2.List(j) Then
Listbox2.Selected(j) = True
Exit Sub
End If
Next j
End If
Next i
Gruß, Nemesis
************************************************************
Holger schrieb am 04.06.2009 17:58:01:
Hallo nemesis,
versuche folgendes Quick-and-Dirty-Makro im Code der UserForm:
Private Sub ListBox1_Click()
b = "Wert in ListBox2 nicht vorhanden."
c = "Wert in ListBox3 nicht vorhanden."
For i = 0 To ListBox2.ListCount - 1
If ListBox2.List(i) = ListBox1.Value Then
ListBox2.Value = ListBox1.Value
b = ""
Exit For
End If
Next i
For i = 0 To ListBox3.ListCount - 1
If ListBox3.List(i) = ListBox1.Value Then
ListBox3.Value = ListBox1.Value
c = ""
Exit For
End If
Next i
If not(b + c = "") Then MsgBox b + vbCrLf + c 'b+c ungleich "", aber Zeichen machen Probleme im Forum
End Sub
Gruß
Holger
nemesis schrieb am 04.06.2009 16:31:56:
Hi @ll!
Tue mich gerade etwas schwer mit Listboxen in meinem Excelsheet.
Habe drei Listboxen, jeweils mit den Einträgen "x1", "x2", und "x3".
Wenn ich nun in der ersten Listbox den Eintrag "x1" markiere, möchte ich, dass dieser ebenfalls in den beiden anderen Listboxen markiert wird. Wäre der Eintrag in keiner der anderen Listboxen vorhanden, möchte ich eine MsgBox.
Kann mir jemand helfen?
Gruß im Voraus!
Nemesis |