Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1568to1572
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
ListBox RemoveItem
17.07.2017 12:12:15
Siegfried
Hallo zusammen,
noch eine weitere Frage zu RemoveItem.
Ich habe die Auswahl aus einer ListBox3 in eine andere ListBox5 übertragen,
wenn ich das Formular schließe und erneut aufmache, sollen die bereits ausgewählten Werte nicht mehr in der ListBox3 erscheinen.
Dazu habe ich folgenden Code geschrieben:
(ArrAuswahl enthält die bereits ausgewählten Werte.)
Sheets("Meldg").Activate
ReDim ArrMeldg(1 To AnzMeldg, 1 To 5)
For n1 = 1 To AnzMeldg
ArrMeldg(n1, 1) = Range("Meldg.Start").Offset(n1, MeldgNMCol).Value
ArrMeldg(n1, 2) = Range("Meldg.Start").Offset(n1, MeldgSXCol).Value
ArrMeldg(n1, 3) = Range("Meldg.Start").Offset(n1, MeldgSKCol).Value
ArrMeldg(n1, 4) = Range("Meldg.Start").Offset(n1, MeldgAKCol).Value
ArrMeldg(n1, 5) = Range("Meldg.Start").Offset(n1, MeldgTRCol).Value
Next n1
If AnzAuswahl größer 0 Then
For n2 = 1 To AnzAuswahl
SuchText = ArrAuswahl(n2)
For n1 = 1 To AnzMeldg
If Range("Meldg.Start").Offset(n1, MeldgNMCol).Value = SuchText Then
With ListBox3
ListBox3.RemoveItem (n1)
End With
End If
Next n1
Next n2
End If
Dabei erhalte ich eine Fehlermeldung.
Wie muss der Code geändert werden?
Gruß
Siegfried

17
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: ListBox RemoveItem
17.07.2017 12:17:54
yummi
hallo Siegfried,
listbox zählen von 0 an, du musst also n1-1 bei removeItem nehmen, dann sollte es gehen
Gruß
yummi
AW: ListBox RemoveItem
17.07.2017 12:24:07
Siegfried
Hi Yummi,
hab ich versucht, klappt aber nicht.
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 12:26:13
yummi
Hallo Siegfried,
wenn du einzeln durchstepst im debugger, wo bekommst Du denn genau die Fehlermeldung?
Gruß
yummi
AW: ListBox RemoveItem
17.07.2017 12:35:00
Siegfried
Hi Yummi,
ich habe den Code in die Initialize Anweisung geschrieben.
Die Fehlermeldung erhalte ich schon beim Aufruf der UserForm.Show, so komme ich gar nicht erst in den betroffenen Code.
Wenn ich Deinen ersten Hinweis umsetze, lautet die Fehlermeldung:
"Index außerhalb des gültigen Bereichs"
Gruß
Siegfried
Anzeige
AW: ListBox RemoveItem
17.07.2017 12:37:57
yummi
Hallo Siegfried,
setz mal den break point bei Userform1.show und step dann mit F8 weiter, bis die Fehlermeldung kommt
Gruß
yummi
AW: ListBox RemoveItem
17.07.2017 12:47:15
Siegfried
Hi Yummi,
Danke für Deine Bemühung,
ich habe in der Zwischenzeit statt RemoveItem in die fragliche Zeile einen Ersatzeintrag "./." vorgenommen.
So klappt es wie gewünscht.
Aber ich werde trotzdem Deinen Hinweis aufnehmen.
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 12:54:45
Nepumuk
Hallo Siegfried,
wähle im VBA-Editor - Extras - Optionen - Allgemein - Unterbrechen bei Fehlern - die Option "In Klassenmodul". Damit kommst du im Fehlerfall immer an die richtige Zeile.
Gruß
Nepumuk
Anzeige
AW: ListBox RemoveItem
17.07.2017 12:59:46
Siegfried
Hi Nepumuk,
auch Dir Danke,
Dein Hinweis ist bestimmt für künftige Fälle wichtig.
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 13:07:02
Siegfried
Hi Nepumuk,
auch wenn ich eine Lösung gefunden habe, ist sie ja nur ersatzweise zu akzeptieren.
Eleganter wäre schon die RemoveItem-Methode.
Nach der Umsetzung Deines Hinweises erhalte ich den Fehler in der Zeile:
ListBox3.RemoveItem (n1)
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 13:14:35
yummi
Hallo Siegried,
welchen Wert hat denn n1 und wieviel Elemente hast du in Listbox3?
lass dir mal mit debug.print Listbox3.listcount an der Stelle ausgeben.
Da scheint es eine Diskrepanz zu geben
Gruß
yummi
Anzeige
AW: ListBox RemoveItem
17.07.2017 13:29:34
Nepumuk
Hallo Siegfried,
welcher Fehlertext und welche Fehlernummer wird angezeigt?
Gruß
Nepumuk
AW: ListBox RemoveItem
17.07.2017 13:59:44
Siegfried
Hi Nepumuk,
Laufzeitfehler '-2147024809(80070057)':
Ungültiges Argument
Hi Yummi,
ListBox3 enthält 16 Elemente
n1 entspricht der jeweiligen Position (Zeile) von SuchText
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 14:03:56
yummi
Hallo Siegfried,
welchen Wert hat n1? evtl Größer gleich 16?
Gruß
yummi
AW: ListBox RemoveItem
17.07.2017 14:10:53
Siegfried
Hi Yummi,
n1 hat maximal 16 = AnzMeldg
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 14:22:55
yummi
Hallo Siegfried,
das ist genau das, was ich gesagt habe:
Die Listbox geht von 0-15 ( 16 Elemente) und wenn du an die 16. Stelle schreiben oder löschen willst, dann bist du ausserhalb des Bereichs, also kein Speicher da, deswegen der crash.
Kannst Du auch sehr gut sehen, wenn du dir die Variable der Listbox in das Überwachungsfenster ziehst und aufklappst.
Gruß
yummi
Anzeige
AW: ListBox RemoveItem
17.07.2017 14:33:54
Siegfried
Hi Yummi,
egal wie ich schreibe
For n1 = 1 To AnzMeldg
oder
For n1 = 0 To AnzMeldg - 1
in beiden Fällen erhalte ich die Fehlermeldung Ungültiges Argument
Gruß
Siegfried
AW: ListBox RemoveItem
17.07.2017 14:40:57
Nepumuk
Hallo Siegfried,
wenn du den 1. Eintrag löschst (Index 0) dann hat rutscht der 16. Eintrag auf Stelle 15 und hat daher den Index 14. Jetzt klarer? Du musst also von unten nach oben löschen und daher die Schleife rückwärts laufen lassen (Step -1).
Gruß
Nepumuk
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen