Run Time Error (2147352571) bei Listbox.AddItem

Hallo zusammen,

habe eine komische Fehlermeldung. Ich lese eine Spalte mit PLZ mit der Find-Funktion aus und fülle eine Listbox mit den Werten, die dem Suchkriterium entsprechen.
Manchmal (nicht immer!)kommt es gleich nach dem starten der Suchfunktion zu einer Fehlermeldung:

Runtime Error 2147352571 (80020005) - Type mismatch

Wenn ich dann in die Stelle mit dem Code wechsle, dann leuchtet die Stelle mit der Anweisung „Listbox1.AddItem rngFind“

Wenn ich das Excel File schließe und neu öffne ist der Fehler wieder für einige Zeit behoben. Es müssen auch alle weiteren geöffneten Excel Files geschlossen werden. Erst wenn Excel komplett zugemacht worden ist, kann das eigentliche file neu gestartet werden und es läuft wieder (für eine gewisse zeit…).

Wer kann mir sagen, woran das liegen könnte und wie man den fehler beheben kann.
Kann auch gerne mal den kompletten Code schicken wenns hilft.

Grüße
Peter

Hallo Peter,

Runtime Error 2147352571 (80020005) - Type mismatch

Du hast versucht, Zahlen und Strings zu mischen, das geht nicht.

„2“ + „3“ geht, da kommt „23“ raus.
2 + 3 geht auch, das ergibt 5.
Aber 2 + „3“ geht nicht, da sagt VB ‚Type mismatch‘.

der Rest von Deinem Problem ist VBA, das kenne ich nicht. :smile:

Gruß, Rainer

Hallo,

was steht im Fehlerfall in der Variable rngFind drin, ist es moeglich, das dort ein undefinierter Wert drinsteht, oder das der Fehler genau eine Zeile vorher auftritt?

Hast du deine Routine mittels eines OnError goto ErrHere … ErrHere:
Konstrukt umschlossen?

Tschau
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

im Fehlerfall hat rngFind den ersten Wert der PLZ, der dem Suchkriterium entspricht. Also z.B. „79106“
Der Debugger steht dann bei der Stelle wo der Wert rngFind der Listbox hinzugefügt werden soll.(ListBox.AddItem rngFind)

Warum läuft denn der Code manchmal wunderbar und manchmal nicht???
Das kann ich einfach nicht verstehen!

Leider weiss ich nicht wie man die routine mit einem „on error konstrukt“ umschließt. Gibt es dazu vorlagen?

Kann man den Wert von rngFind nicht einfach per VBA umwandeln in einen verträglichen Typ damit es keinen Typ mismatch gibt?

Grüße
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi peter,

im Fehlerfall hat rngFind den ersten Wert der PLZ, der dem
Suchkriterium entspricht. Also z.B. „79106“

Das denkst du, Excel sieht das anders, du siehts als Suchbegriff 4711 und siehst in der Suchliste 4711. aber Excel findet das nicht wenn es unterschiedlich formatiert ist o.ä.

Der Debugger steht dann bei der Stelle wo der Wert rngFind der
Listbox hinzugefügt werden soll.(ListBox.AddItem rngFind)

Setz vor der Codezeile mal
msgbox rngfind
bzw
msgbox rngfind.address

Warum läuft denn der Code manchmal wunderbar und manchmal
nicht???
Das kann ich einfach nicht verstehen!

dito :smile:

Leider weiss ich nicht wie man die routine mit einem „on error
konstrukt“ umschließt. Gibt es dazu vorlagen?

on error konstrukt kenne ich nicht in VBA, gibts wahrscheinlich in VB.

Kann man den Wert von rngFind nicht einfach per VBA umwandeln
in einen verträglichen Typ damit es keinen Typ mismatch gibt?

Cstr, Clng, Cint,…

Gruß
Reinhard

Hallo,

on error konstrukt kenne ich nicht in VBA, gibts
wahrscheinlich in VB.

das mit dem on error ist wohl die einzigste und auch sinnvollste Weise der Fehlerbehandlung in einer VBA-Routine. Aus diesem Grund hat MickySoft auch das Codekommentierungs- und Fehlerbehandlungs-AddIn in der VB-GUI zur Verfuegung gestellt.

Das sieht dann etwas so aus:
Public Function WriteWKZGData(ByRef inRec As Recordset, ByRef outRec As Recordset, bWriteNewRec As Boolean)
On Error GoTo errHere


’ Hier kommt dann der eigentliche Funktionscode


ExitHere:
Exit Function
errHere:
Select Case Err.Number
Case 3349
foundInvalidData = True
Resume Next
case 80020005
MsgBox " Nicht alle Eingabefelder der Sachnummern entsprechen der vereinbarten Formatierung", vbCritical + vbOKOnly, „Formatfehler EXCEL“
Case 3464
foundInvalidData = True
Case Else
MsgBox "Error " & Err.Number & ": " & Err.Description, vbCritical, „General.ImportSAPData“
End Select
Resume ExitHere
Resume Next

End Function

Tschau
Peter

habs mal vorerst mit
MyString = CVar(rngFind)
abgeändert. Es scheint mir, als sei die Absturzrate nun geringer geworden. Werde noch die Fehlerbehandlungs-Methode ausprobieren.

Super Vielen Dank für die guten Tips.
Grüße
Peter

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]