Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
816to820
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
816to820
816to820
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Laufzeitfehler 381
13.11.2006 13:17:30
Julia
Hallo,
also ich habe da eine listbox. die benutzte ich um aktuelle werte anzuzeigen udn wieder zu löschen...an sich funktioniert alles...aber lieder nur an sich.
also wenn im schleifendurchlauf n ein wert hinzugefügt wird(dieser wird dann im schleifendurchlauf n+1 wieder gelöscht) und dann in n+1 noch ein wert hinzugefügt wird, dann bekomme ich diesen laufzeitfehler...warte ich mit dem löschen des elements aus dem schleifensurchlauf n bis n+2 bekomme ich allerdings kein fehler...
ich habe auch schon debuggt und das problem ist dann der listindex irgendwie höher ist als er eigentlich sein darf...beispiel:
reihenefolge so wie im orginal code...
UserForm1.ListBox3.AddItem ThisWorkbook.Sheets("Berechnung").Cells(zeile,1).Value
'das is dann zum löschen
For a = 0 To UserForm1.ListBox3.ListCount - 1
b = ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1)
If (b = UserForm1.ListBox3.List(a)) Then
UserForm1.ListBox3.RemoveItem a
End If
Next a
als ich debugged hatte war listcount=2, aber das a in der schleife war a=2...das geht doch eigentlihc gar nciht oder?! mach ich was falsch!? hab ich was vergessen zurückzusetzten!?
danke für alle tipps

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 381
13.11.2006 13:36:56
Stefan
Hallo Julia,
Sobald Excel ueber die For... Zeile gelaufen ist, interessiert es offenbar die Schleife nicht mehr wenn sich der ListCount aendert, da die For-Zeile gar nicht mehr angesprochen wird. Der Wert den ListCount zu Beginn der Schleife hatte ist der, der fuer den Schleifenzaehler benutzt wird.
Versuch die Schleife in eine DO...LOOP UNTIL -Schleife umzuwandeln. Dort wird der Vergleich jedesmal wieder durchgefuehrt.
Schoene Gruesse
Stefan
AW: Laufzeitfehler 381
13.11.2006 18:09:49
Julia
ok vielen dank werde es leider erst freitag probieren können, aber trotzdem danke :-)
AW: Laufzeitfehler 381
17.11.2006 12:53:46
Julia
habe es jetzt mal so probiert...aber das geht auch net..
ich glaub ich steh einfach mal voll auf'm schlauch...
hast du noch ne idee!?
Do
b = ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1)
If (b = UserForm1.ListBox3.List.ListIndex) Then
UserForm1.ListBox3.RemoveItem a
End If
UserForm1.ListBox3.ListIndex = UserForm1.ListBox3.ListIndex - 1
Loop Until UserForm1.ListBox3.ListIndex = 0
danke
Anzeige
AW: Laufzeitfehler 381
17.11.2006 13:34:59
Stefan
Hallo Julia,
Dein Ziel ist ja noch immer eine Schleife, die genausooft durchlaufen wird wie Deine ListBox Eintraege hat. Dabei ist das Problem das sich die Anzahl der Eintraege waerend des durchlaufs veraendern kann. Der folgende Code sollte funktionieren (allerdings ungetestet...):

b = ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1) 'Diese Zeile kann aus der Schleife raus
a=0
Do
If b = UserForm1.ListBox3.List(a) Then UserForm1.ListBox3.RemoveItem a
a = a + 1
Loop Until a >= UserForm1.ListBox3.ListCount

Schoene Gruesse
Stefan
Anzeige
AW: Laufzeitfehler 381
17.11.2006 13:56:38
Julia
hallo,
hab es zwischenzeitlich jetzt mit:
i = 0
Do
c = UserForm1.ListBox3.List(i)
b = ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1)
If (b = c) Then
UserForm1.ListBox3.RemoveItem i
End If
i = i + 1
Loop Until (UserForm1.ListBox3.ListIndex "kleiner gleich" i)
hin bekommen...
so funktioniert es auch so das der laufzeitfehler ncith mehr auftritt...
ABER:
die do schleife ist innerhalb einer for schleife(ja ich weiß ist nciht gerade der beste weg :-(...) nun habe ich das problem, wenn ich innerhalb eines schleifen durchlaufs(bei der schleife wo die einträge in die listbox eingetragen werden) 2 einträge habe...
und dann bei der schleife wo die einträge ausgetragen werden(s.u.) bei der messagebox beim ersten teil nein sage und beim zweiten teil ja trägt er das zweite teil nciht aus!?" aber warum weiß ich nicht!? :-(
For zeile = 4 To 4 + anz_teile - 1
If ThisWorkbook.Sheets("Berechnung").Cells(zeile, sp + 1) = "BD" Then
m_red (ThisWorkbook.Sheets("Berechnung").Cells(zeile, 2))
m_bd(ThisWorkbook.Sheets("Berechnung").Cells(zeile, 2)) = True
If (ThisWorkbook.Sheets("Berechnung").Cells(zeile, sp) "kleiner" Int(UserForm1.Takt)) Then
tmp = MsgBox("Wurde Teil " & ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1) & " repariert?", vbYesNo, "Reparatur")
If tmp = 6 Then
i = 0
Do
c = UserForm1.ListBox3.List(i)
b = ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1)
If (b = c) Then
UserForm1.ListBox3.RemoveItem i
End If
i = i + 1
Loop Until (UserForm1.ListBox3.ListIndex "kleiner gleich" i)
hast du ne idee?! an sich wird ja in der oberen schleife ThisWorkbook.Sheets("Berechnung").Cells(zeile, 1) neu belegt und die schleife in der die listboxeinträge ausgetragen werden, wird dort nochmal neu intialisiert...an sich sollte doch alles funktionieren oder!? hab ich da jetzt nen denkfehler!?
Anzeige
AW: Laufzeitfehler 381
17.11.2006 14:06:01
Julia
also das problem ist das der listboxindex = -1 aber warum weiß ich nicht...
hab mal debugger angemacht udn alles schritt für schritt durchgeschaut...weißt du warum der index das -1 ist!?
AW: Laufzeitfehler 381
17.11.2006 14:23:12
Stefan
Hallo Julia,
Das einzige was Dir der ListIndex zurueckgibt, ist die Index-Nummer des augeblicklich ausgewaehlten Eintrages (also der, der blau markiert ist). Wenn keiner ausgewaehlt ist, ist der ListIndex -1.
In Deiner letzten Zeile musst Du mit ListCount arbeiten wenn Du durch die ganze Liste durchgehen willst, nicht mit ListIndex.
Schoene Gruesse
Stefan
ok
17.11.2006 14:32:24
Julia
ai ich seh schon wer lesen kann ist kalr im vorteil...
danke für die hilfe... :-)
Anzeige

13 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige