Hallo roman,
du hast in deiner Box sicherlich am Ende mindestens eine Zeile, in der nichts steht, oder deine Liste in Box ist so klein, dass Excel automatisch einige Leerzeilen hinzudenkt (meistens kleiner als 10, hängt von der Einstellung ab). Dann liest du in Material den Wert "Null" ein. Dieser ist aber einem String nicht zuordenbar.
Versuche es einmal mit
For i = 0 To Box.ListCount - 1
AlteMaterialienListe(b) = Box.List(i)
Next i
Viel Erfolg
Holger
roman schrieb am 24.12.2007 12:40:33:
Hallo Holger,
danke für deine Antwort, ich habe gemerkt dass ich ständig mit einer leeren ComboBox gearbeitet habe! Schön blööd! jetzt hab ich aber plötzlich ein neues problem und zwar reklamiert er mir jetzt an der Stelle "AlteMaterialienListe(b) = Material" mit dem Fehler: "Laufzeitfehler '94':Unzulässige Verwendung von Null. " Ich hab gesehen dass er mir erst beim letzten Element in dieser For Each-Schleife irgendwie probleme macht, allerdings verstehe ich nicht weshalb denn die länge des Arrays AlteMaterialienListe ist korrekt. Was mache ich falsch? Wenn es zu schwierig ist nur mit diesem Code Schnipsel könnte ich auch die ganze Anwendung mailen.
gruss roman
Holger schrieb am 24.12.2007 09:05:35:
Hallo roman,
du versuchst, einen Eintrag zu löschen, der gar nicht mehr da ist. Das kann verschiedene Ursachen haben. Vielleicht hast du bereits in einem früheren Durchlauf einige Einträge gelöscht, so dass das Ende der gekürzten Liste jetzt neue Item-Nummern hat. Oder du hast dich mit dem Hochzählen des e geirrt und es müsste e-1 dort stehen, was am Ende der Liste ebenfalls zu einem Fehlen führen kann. Ich empfehle, vor dem RemoveItem einen Haltepunkt zu setzen und den Wert vor jedem Löschen zu überprüfen und mit der Länge der Liste zu vergleichen. Vielleicht entfernst du ab dem zweiten Durchlauf sogar den falschen Wert.
Ich habe heute keine Zeit, deine Listen und Schleifen im Detail nachzuvollziehen, doch denke ich, dass du den Fehler auch so selber finden wirst. Sonst melde dich noch einmal.
Frohes fest
Holger
roman schrieb am 23.12.2007 15:57:51:
hallo,
ich hab ein problem und zwar funktioniert mir in folgendem beispiel "Box.RemoveItem e" nicht, ich erhalte dann die fehlermeldung "Laufzeitfehler '-2147024809 (80070057)': ungültiges Argument -2." . Was mache ich falsch?
Hier der Code:
Private Sub FillBoxes(Box As ComboBox, Nr As Integer)
Dim NeueMaterialienListe() As String
Dim AlteMaterialienListe() As String
Dim NeueMaterialien() As String
Dim i, b, laengeNML As Integer
Dim e As Variant
ReDim AlteMaterialienListe(Box.ListCount) As String
i = 4
help = 0
While Worksheets("Tabelle2").Cells(i, 2).Value <> ""
If Worksheets("Tabelle2").Cells(i, 3).Value = "" And Worksheets("Tabelle2").Cells(i, 2).Value <> "nichts" And Nr = 1 Then
If MsgBox("Achtung, keine Wärmekennzahl! Wollen Sie weiterfahren?", vbOKCancel + vbInformation + vbDefaultButton2, "Hinweis") = vbCancel Then
End
End If
End If
laengeNML = 1 + laengeNML
i = i + 1
Wend
ReDim NeueMaterialienListe(laengeNML - 1) As String
For N = 4 To i - 1
NeueMaterialienListe(N - 4) = Worksheets("Tabelle2").Cells(N, 2).Value
Next
ReDim NeueMaterialien(Box.ListCount + laengeNML - 1)
b = 0
For Each Material In Box.List
AlteMaterialienListe(b) = Material
b = b + 1
Next
e = 0
d = 0
For Each Materialalt In AlteMaterialienListe
c = 0
For Each Materialneu In NeueMaterialienListe
c = c + 1
If Materialalt = Materialneu Then
e = e + 1
Exit For
ElseIf c = laengeNML Then
NeueMaterialien(d) = Materialneu
Box.RemoveItem e -> Hier reklamiert er
d = d + 1
End If
Next
Next
For N = 0 To d - 1
Box.AddItem NeueMaterialien(N)
Next
Box.ListIndex = "0"
Call Cleartest
End Sub |