Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
356to360
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
356to360
356to360
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

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

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

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige