Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1084to1088
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
Inhaltsverzeichnis

Überlauf

Überlauf
ISI
Servus verehrtes Forum,
ich habe folgende Function, die mir komischerweise auf einmal (hat mit anderen csv-Dateien schon ettliche Male Problemlos funktioniert) einen Fehler : "Überlauf ausspuckt", und zwar bei
For I = 0 To UBound(Tmp).
Es kann ja eigentlich keine Endlosschleife sein, oder?
Gruß,
Ilan

Function ImportCSV(sDateix As String, sPfadx As String, intCx As Integer)
Dim Arr
Dim Datei
Dim FSO
Dim L As Long
Dim isRWE As Boolean
Dim xx As Long
Dim vntLeistung As Variant
Dim Tmp As Variant
Dim vnt_Ausgabe() As String '---> wichtig, dass es nicht als Variant gemacht wird, da es sonst   _
_
_
_
probleme mit den numerischen
'     Werten und der Trennzeichensetzung geben kann
Dim I As Integer
Dim II As Integer
Dim Wbk As Workbook
Set FSO = CreateObject("Scripting.FilesystemObject")
Set Datei = FSO.OpentextFile(sPfadx & sDateix)
Arr = Split(Datei.readall, vbCrLf) 'Nach Datensätzen splitten wobei vbCrLf nichts anderes  _
bedeutet,
'als dass der Cursor an den Anfang einer neuen Zeile gesetzt  _
_
_
_
wird
Datei.Close
ReDim vnt_Ausgabe(UBound(Arr), 20) '20 Spalten müssten genügen
For L = 0 To UBound(Arr)
Tmp = Split(Arr(L), ";") 'Jeden Datensatz nach Werten splitten und in den tempöraren Array   _
_
_
_
packen
If Not UBound(Tmp) = -1 Then
If Tmp(LBound(Tmp)) = "STRASSE" Then 'Falls es sich um eine RWE Datei handelt
isRWE = True
End If
End If
For I = 0 To UBound(Tmp)
'6. Spalte numerisch, deswegen per CDbl umwandeln
If (I = 5) And (IsNumeric(Tmp(I))) Then
Tmp(I) = CStr(CDbl(Tmp(I)))
If isRWE = True Then 'Falls RWE vom Datum nur die letzten vier Zeichen nehmen
Tmp(I) = Right(Tmp(I), 4)
End If
End If
vnt_Ausgabe(L, I) = Tmp(I) 'jeden Wert (temporären Array) in das Array vnt_Ausgabe  _
umschaufeln
Next
Next
Set Wbk = Workbooks.Add
Application.DisplayAlerts = False
Range("A1").Resize(UBound(vnt_Ausgabe) + 1, UBound(vnt_Ausgabe, 2)) = vnt_Ausgabe 'Alles ab A1   _
_
_
_
reinschreiben
Wbk.SaveAs Filename:=sPfadx & Left(sDateix, Len(sDateix) - 3) & "xls"
Wbk.Close
Application.DisplayAlerts = True
ImportCSV = False
End Function

2
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Benutzer
Anzeige
AW: Überlauf
10.07.2009 10:45:48
Tino
Hallo,
ich vermutlich bekommt I einen Wert > 32.767 zugewiesen.
Deklariere mal die Variable I mal als Long kann bis 2147483647 gehen.
Gruß Tino
AW: Überlauf INT -> Long
10.07.2009 10:47:41
Harald
Hallo Ilan,
könnte sein, dass Ubound(Tmp) größer 32677 ist? Verwende lieber Long.
Aus der Excel Hilfe:
- Variablen vom Datentyp Integer werden als 16-Bit-Zahlen (2 Bytes) in einem Bereich von -32.768 bis 32.767 gespeichert.
- Variablen vom Datentyp Long (lange Ganzzahl) werden als 32-Bit-Zahlen (4 Bytes) mit Vorzeichen im Bereich von -2.147.483.648 bis 2.147.483.647 gespeichert.
Gruß
Harald

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige