Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1468to1472
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
Begrenzung der Anzahl an Listbox-Auswahl
20.01.2016 19:58:27
Henny
Hallo Zusammen,
ich bin auf der Suche nach einer VBA Lösung, die die Anzahl von möglichen Auswahlen in einer Listbox auf 3 begrenzt (multiselect-Eigenschaft).
Die Auswahl der Listbox soll in Tabellenblatt 1 Range (K14:K16) geschrieben werden. Ich habe folgenden Sub gebastelt (siehe unten). Das Problem ist, dass bei der Auswahl von mehr als 3 Auswahlmöglichkeiten (es gibt mehr als 100) die Zellen K17, K18 etc. überschrieben werden.
Private Sub ListBox1_Change()
Tabelle1.Range("K14:K16).ClearContents
Const zeile = 3
Const spalte = 8
Dim zähler As Integer
Dim i As Integer
With ListBox1
For i = 0 To .ListCount - 1
If .Selected(i) Then
Cells(zeile + zähler, spalte) = .List(i)
zähler = zähler + 1
End If
Next i
End With
End Sub

Vorab vielen Dank! Ich hoffe ich finde jemand der mir weiterhelfen kann. Brauche eine Lösung für meine Abschlussarbeit bis nächste Woche und schaffe es einfach nicht allein :/
Henny

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Begrenzung der Anzahl an Listbox-Auswahl
20.01.2016 20:19:16
Daniel
Hi
probier mal folgende Codes:
Option Explicit
Dim arrGewählt() As Boolean
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As  _
Single, ByVal Y As Single)
Dim i As Long
ReDim arrGewählt(ListBox1.ListCount - 1)
For i = 0 To ListBox1.ListCount - 1
arrGewählt(i) = ListBox1.Selected(i)
Next
End Sub
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
ByVal Y As Single)
Dim i As Long
Dim Zähler As Long
For i = 0 To ListBox1.ListCount - 1
Zähler = Zähler - ListBox1.Selected(i)
Next
If Zähler > 3 Then
For i = 0 To ListBox1.ListCount - 1
istBox1.Selected(i) = arrGewählt(i)
Next
End If
End Sub
im MouseDown-Event (das wird ausgeführt, bevor du einen Eintrag anklickst, dh wenn sich der Mousebutton noch nach unten bewegt bevor der Kontakt auslöst)
merkten wir uns die ausgewhälten Einträge.
im MouseUp-Event (dies wird dann nach dem klick auf einen Eintrag ausgeführt)
zählen wir die Anzahl der ausgewählten Einträge. Übersteigt diese den Wert 3, so werden wie zuvor gemerkten Einträge wieder aktiviert und damit der Klick rückgängig gemacht.
Gruß Daniel

Anzeige
AW: Begrenzung der Anzahl an Listbox-Auswahl
20.01.2016 22:06:15
Henny
Hallo Daniel,
was soll ich sagen: Super geil ;)
Zwei Kleinigkeiten musste ich noch anpassen:
1. Fehlt das "L" bei Listbox1 im zweiten Sub
2. Musste noch arrGewählt definiert werden
Private Sub ListBox1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As _
Single, ByVal Y As Single)
Dim i As Long
ReDim arrGewählt(ListBox1.ListCount - 1)
For i = 0 To ListBox1.ListCount - 1
arrGewählt(i) = ListBox1.Selected(i)
Next
End Sub
Private Sub ListBox1_MouseUp(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, _
_
ByVal Y As Single)
Dim i As Long
Dim Zähler As Long
ReDim arrGewählt(ListBox1.ListCount - 1)
For i = 0 To ListBox1.ListCount - 1
Zähler = Zähler - ListBox1.Selected(i)
Next
If Zähler > 3 Then
For i = 0 To ListBox1.ListCount - 1
ListBox1.Selected(i) = arrGewählt(i)
Next
End If
End Sub
So funktioniert das Ganze einwandfrei.
Danke dir für die (unglaublich) schnelle Hilfe!
Wirklich Top!!
Anzeige

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige