Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Laufzeitfehler 16 - LEN (String)

Forumthread: Laufzeitfehler 16 - LEN (String)

Laufzeitfehler 16 - LEN (String)
03.01.2004 22:58:26
Gabor
Hallo Leutz,

ein Kuriosum von VBA ist mir heute mal wieder begegnet.

Aus einer Textdatei wird ein String gelesen (29 Zeichen) der mit @ getrennt ist.

Die Funktion LEN(String) liefert den Laufzeitfehler 16 - "Ausdruck zu komplex"

Das kuriose daran ist, das ich an anderer Stelle einen wesentlichen längeren String mit mehr "@" einlese und dieser Fehler nicht auftritt.... Auch wird bei zeilenweiser Abarbeitung ab dieser Stelle der Code völlig korrekt ausgeführt.

Hat jemand eine Idee ? Die Variable für die Länge ist vom Typ Double.

Gruß

Gabor
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Laufzeitfehler 16 - LEN (String)
03.01.2004 23:06:36
Ramses
Hallo

Zeig mal den Code

Gruss Rainer
AW: Laufzeitfehler 16 - LEN (String)
04.01.2004 18:53:04
Gabor
Hi Ramses,

hier der Code der funktioniert :

Public

Sub SplitDebitorString(SourceString$, DestArray() As Kundendaten)
Dim Fall%, i#, GefPos#
If Not Mid(SourceString, 4, 1) = 2
ReDim DestArray(0)
DestArray(0).KdNr = Trim(Str(Val(Left(SourceString, 10))))
Fall = 2
For i = 12 To Len(SourceString)
GefPos = InStr(i, SourceString, "@", vbTextCompare)
If GefPos > 0 Then
If Mid(SourceString, GefPos - 1, 1) <> "@" Then
Select Case Fall
Case 2
DestArray(0).KdName = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 3
DestArray(0).KdName2 = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 4
DestArray(0).AdresseStr = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 5
DestArray(0).AdressePlz = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 6
DestArray(0).AdresseOrt = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 7
DestArray(0).AdresseTel = Replace(Mid(SourceString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
End Select
Else
Fall = Fall + 1
i = GefPos
End If
End If
Next i
End If
End Sub


Und hier der, der den Fehler bringt läuft :

Public

Sub SplitCardString(ByVal GesString$, DestArray() As Kundenkarten)
Dim Fall%, i#, GefPos#
On Error Resume Next
ReDim DestArray(0)
Fall = 1
For i = 1 To Len(GesString)
GefPos = InStr(i, GesString, "@", vbTextCompare)
If GefPos > 0 Then
If Mid(GesString, GefPos - 1, 1) <> "@" Then
Select Case Fall
Case 1
DestArray(0).Kartennummer = Replace(Mid(GesString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 2
DestArray(0).Unbekannt = Replace(Mid(GesString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 3
DestArray(0).Kundennummer = Replace(Mid(GesString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
Case 4
DestArray(0).Kartenstatus = Replace(Mid(GesString, i, GefPos - i), Find:=Chr(34), Replace:="", Compare:=vbTextCompare)
Fall = Fall + 1
i = GefPos
End Select
Else
Fall = Fall + 1
i = GefPos
End If
ElseIf i < Len(GesString) Then
DestArray(0).Kurzzeichen = Mid(GesString, i, Len(GesString) - (i - 1))
i = Len(GesString)
End If
Next i
End Sub


Bisherige Lösung : On Error Resume next ...

Gruß

Gabor
Anzeige
Noch OFFEN plz Help o.t.
06.01.2004 16:52:18
Gabor
.
;

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige