nachdem mir hier bisher immer geholfen werden konnte, hoffe ich natürlich auch mit dem nächsten Problem den Profis ihr Wissen entlocken zu können.
Ich habe 2 Listboxen auf einem Tabellenblatt. Beide beinhalten exakt (auch in der Reihenfolge) die gleichen Werte. Ziel: Wenn Werte der zweiten Listbox selektiert werden, möchte ich prüfen, ob der Wert bereits in der ersten Listbox ausgewählt wurde, dann soll ein Hinweis erstellt werden, dass der Wert bereits in der ersten Listbox ausgewählt wurde und der entsprechende Wert aus der zweiten Listbox soll wieder entmarkiert werden. Kurz:
1. Prüfe ob der selektierte Wert bereits in der ersten Listbox vorhanden ist
2. Gib einen Hinweis mit entsprechendem Wert aus
3. Entmarkiere den entsprechenden Wert in der zweiten Listbox wieder, dabei unterbinde das Change-Event der Listbox
Im folgenden Makro ermittele ich über zwei Arrays die Selektionen der Listboxen. Im Anschluss vergleiche ich die Arrays miteinander und erhalte auch bereits die Messagbox, welche der Werte doppelt markiert wurden. Aber leider schaffe ich es nicht die dann entsprechende Selektion in der zweiten Listbox zu löschen. (Nur der erste Werte funktioniert, weil der Index bei 0 jeweils steht). Ich habe mal die Stelle an der die Entmarkierung erfolgen soll fett markiert. lbweitSB ist die zweite Listbox.
Private Sub lbweitSB_Change()
Dim WKZ As String
Dim strSelweitSB As Variant
Dim varSelweitSB As Variant
Dim intSelweitSB As Integer
'If NoEvent = True Then Exit Sub
'Listbox1
'Daten der ListBox in Tabelle "Daten" wegeschreiben
Dim ii As Integer, Zeile As Long, Spalte As Long
Sheets("Daten").Range("D_WKZListe2").ClearContents 'Bereich R2:R33
With lbweitSB
Zeile = 2
Spalte = 19
For ii = 0 To .ListCount - 1
If .Selected(ii) = True Then
Sheets("Daten").Cells(Zeile, Spalte).Value = .List(ii, 0)
Zeile = Zeile + 1
strSelweitSB = strSelweitSB & "|" & .List(ii)
End If
Next
End With
varSelweitSB = Split(Mid(strSelweitSB, 2), "|") 'Array mit Auswahl
With lbzusSB
Zeile = 2
Spalte = 18
For ii = 0 To .ListCount - 1
If .Selected(ii) = True Then
Sheets("Daten").Cells(Zeile, Spalte).Value = .List(ii, 0)
Zeile = Zeile + 1
strSelzusSB = strSelzusSB & "|" & .List(ii)
End If
Next
End With
varSelzusSB = Split(Mid(strSelzusSB, 2), "|") 'Array mit Auswahl
For intSelweitSB = 0 To UBound(varSelweitSB)
For intvarSelzusSB = 0 To UBound(varSelzusSB)
If (varSelweitSB(intSelweitSB) = varSelzusSB(intvarSelzusSB)) Then
MsgBox "... " & varSelweitSB(intSelweitSB) & " ..." & vbCrLf & "...", vbInformation
'NoEvent = True
MsgBox lbweitSB.SelectedItems.Count.ToString()
lbweitSB.Selected(intSelweitSB) = False
'NoEvent = False
Else: End If
Next intvarSelzusSB
Next intSelweitSB
End Sub
Danke!