Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1640to1644
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
Inhaltsverzeichnis

VBA: Wenn Listbox leer, mal Listindex = 0 mal = -1

VBA: Wenn Listbox leer, mal Listindex = 0 mal = -1
07.09.2018 08:11:13
Jessi

Hallo zusammen,
ich habe ein Problem mit meiner Listbox. Ich habe eine Excel-Datei ("Ziel.xlsm") mit der eine andere Excel-Datei ausgewertet wird. Meine Datei ("Ziel.xlsm") mit Makro bleibt immer die gleiche. Jedoch kann die Datei, auf die sie sich bezieht variieren. Es funktioniert soweit alles, wie geplant. Die andere Datei heißt immer "Basis.xlsx" und ist vom Aufbau immer gleich. Lediglich die Daten sind unterschiedlich (Also die Zahlenwerte, da sie zu unterschiedlichen Projekten gehören).
Das Problem ist, wenn kein Eintrag aus der Listbox 1 ausgewählt wurde, dann ist beim Öffnen der 1. Datei "Basis" der Listindex = -1, wenn kein Eintrag ausgewählt wurde.
Daraufhin erscheint eine Msgbox.
Wenn ich nun aber die "Basis"-Datei eines anderen Projektes öffne, ist hier standardmäßig der Listindex = 0, wenn kein Eintrag ausgewählt wurde.
Momentan passe ich jedes mal den Code an. Ich setzte also meine If-Bedingungen jedes mal neu (entweder If Listbox1.Listindex = 0 oder eben = -1).
Ich kann leider nicht mit Kann ich den Listindex irgendwie festsetzen (evtl. bevor sie überhaupt gefüllt wird?), sodass eine universale Lösung erschafft wird? Jedes mal den Code individualisieren ist nicht gerade die beste Lösung.
Ich hoffe, jemand versteht, was ich meine und kann mir helfen.
Viele Grüße
Jessi
PS: Ich arbeite mit Excel 2016, gibt's leider im Eingabeformular noch nicht zur Auswahl.
(Falls jemand den Code braucht:)
Public Sub UserForm_Initialize()  Liste gefüllt, Basis Tabelle muss vorhanden und geöffnet sein
With Workbooks("Basis.xlsx").Worksheets("Tabelle1")
For I = 2 To .Cells(Rows.Count, 1).End(xlUp).Row
Listbox1.AddItem .Cells(I, 4)
Next
End With
End Sub
Public Sub Button_OK_Click()
If Listbox1.ListIndex = -1 Then 'Or Listbox1.ListIndex = 0 Then
MsgBox "Bitte einen Eintrag auswählen."
Exit Sub
Else
With Workbooks("Ziel.xlsm").Worksheets("Kosten")
LZZiel = .Cells(Rows.Count, 3).End(xlUp).Row
Windows("Ziel.xlsm").Activate
For J = 0 To UserForm1.Listbox1.ListCount - 1
If UserForm1.Listbox1.Selected(J) Then                                         _
_

Ab hier wird bei der zweiten "Basis"-Datei nichts mehr erkannt. Erst wenn man
If Listbox1.Listindex = 0 then
Else ...
setzt läuft der Code. Wenn man mit dem Cursor über die letzte (fette) Zeile fährt, erscheint "Eigenschaft Selected konnte nicht abgerufen werden"

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

Betreff
Datum
Anwender
Anzeige
AW: VBA: Wenn Listbox leer, mal Listindex = 0 mal = -1
07.09.2018 09:20:30
daniel
Hi
in einer Multiselect-Listbox funktioniert das mit dem Listindex nicht, der ist nur in einer SingelSelect-Listbox sinnvoll anwendbar.
wenn du wissen willst, ob überhaupt was ausgewählt wurde, nimm eine Schleife:
for i = 0 to listbox1.ListCount - 1
if Listbox1.Selected(i) then Exit for
Next
if i = Listbox1.ListCount Then
Msgbox "Bitte wählen Sie einen Eintrag aus"
Exit Sub
End if
die Prüfung geht hier so, dass die Schleife nur dann vollständig durchlaufen wird, wenn kein Eintrag ausgewählt wurde, ansonsten wird vorzeitig abgebrochen.
Eine vollständig durchlaufenen Schleife erkennt man daran, dass der Schleifenzähler größer ist als der Schleifenendwert. (bzw kleiner bei negativem Step)
Gruß Daniel
Anzeige
AW: VBA: Wenn Listbox leer, mal Listindex = 0 mal = -1
07.09.2018 09:56:21
Jessi
Danke für die schnelle Antwort. Hätte vielleicht noch erwähnen können, dass es eine Multiselect Listbox ist...
Auf jeden Fall funktioniert es super! Vielen lieben Dank !
Gruß Jessi

329 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige