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

Index ausserhalb des gültigen Bereiches

Index ausserhalb des gültigen Bereiches
29.08.2005 13:48:22
Michael
Hallo.
Hab da ein kleines Problem.
Wenn ich versuche meine Tabelle zu füllen, bekomme ich irgendwann den obrigen Fehler.
Woran könnte das nun liegen?
hier der Code:
Open tmp For Input As #1
n = 15
While Not EOF(1)

Line Input #1, z
a = Split(z, ";")
For i = 0 To 6

Range("A" & n).Select
''ActiveCell.FormulaR1C1 = a
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1
Range("C" & n).Select
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1

Range("E" & n).Select
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1

Range("H" & n).Select
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1

Range("J" & n).Select
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1

Range("K" & n).Select
ActiveCell.NumberFormat = "@"
ActiveCell = a(i)
i = i + 1

Next
n = n + 1
Wend
Close #1
Daten werden eingelesen, String gesplittet und dann normalerweise in die Tabelle eingetragen.
Grüße und vielen dank
Michael Reinhardt

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Index ausserhalb des gültigen Bereiches
29.08.2005 14:14:18
Riceman
zwei mögliche ursachen des fehlers (ohne genau danach gesucht zu haben):
1. du greifst auf eine zelle zu, bei der zeile oder spalte "0" ist - diese zelle gibt es nicht, der zeilen- und spaltenindex beginnt erst bei 1.
2. du splittest z in a. wenn in a weniger als sieben elemente sind (dh in irgendeiner zeile der ausgelesenen datei weniger als 6 semikola), greifst du innerhalb der for-schleife mit a(i) auf ein nicht existentes element zu.
eine der beiden möglichkeiten ist 100%ig die ursache.
gruß mario
AW: Index ausserhalb des gültigen Bereiches
29.08.2005 14:28:34
Reinhard
Hi Michael,
ungetestet:

option explicit
Sub tt()
Dim zei As Long, z As String
Dim tmp, spa, a, i As Long
Open tmp For Input As #1
zei = 15
spa = Array(1, 3, 5, 8, 10, 11)
While Not EOF(1)
Line Input #1, z
a = Split(z, ";")
For i = 0 To UBound(a)
With Cells(zei, spa(i))
.NumberFormat = "@"
.Value = a(i)
End With
Next i
zei = zei + 1
Wend
Close #1
End Sub

Gruß
Reinhard
Anzeige
AW: Index ausserhalb des gültigen Bereiches
29.08.2005 14:37:36
Michael
Danke euch beiden!
Reinhard, also, deine Version müsste so gehen nur kommt jetzt mario ins spiel:
er hat recht, ich greife auf einen wert zu der nicht existent ist.
ich hab mehrere zeilen in einer datei. normalerweise haben diese 6 werte.
nun wollt ich aber das ganze mal probieren wenn eine zeile nur 4 werte hat.
und damit kommt er irgendwie nicht klar.
Bei der Version von dir Reinhard bekomme ich ebenfalls den obrigen Fehler.
Aber deine Lösung ist verdammt gut! Danke dafür!
Bei mir kommt kein Fehler
29.08.2005 15:18:15
Reinhard
Hi Michael,
jetzt getestet:Option Explicit

Sub erzeugen()
Dim a, b, satz
Open "c:\test.txt" For Output As #1
For a = 1 To 10
satz = ""
For b = 1 To 6
satz = satz & a & " " & b & " abc" & ";"
Next b
Print #1, Left(satz, Len(satz) - 1)
Next a
Print #1, "abc;abc"
Close
End Sub


Sub tt()
Dim zei As Long, z As String
Dim tmp, spa, a, i As Long
Open "c:\test.txt" For Input As #1
zei = 15
spa = Array(1, 3, 5, 8, 10, 11)
While Not EOF(1)
Line Input #1, z
a = Split(z, ";")
For i = 0 To UBound(a)
'MsgBox "zei:" & zei & " spa(i):" & spa(i) & " i:" & i
With Cells(zei, spa(i))
.NumberFormat = "@"
.Value = a(i)
End With
Next i
zei = zei + 1
Wend
Close #1
End Sub

Gruß
Reinhard
Anzeige
AW: Bei mir kommt kein Fehler
29.08.2005 15:20:44
bst
Auch Hallo,
und was ist falls ubound(a) &GT ubound(spa) ist ?
cu, Bernd
AW: Bei mir kommt kein Fehler
29.08.2005 15:29:39
Reinhard
Hallo Bernd,
du hast Recht, das müßte noch abgefangen werden.
Gruß
Reinhard
Sub tt()
Dim zei As Long, z As String
Dim tmp, spa, a, i As Long
Open "c:\test.txt" For Input As #1
zei = 15
spa = Array(1, 3, 5, 8, 10, 11)
While Not EOF(1)
Line Input #1, z
a = Split(z, ";")
For i = 0 To UBound(a)
if i > ubound(spa) then msgbox "mehr als 6 Werte"
With Cells(zei, spa(i))
.NumberFormat = "@"
.Value = a(i)
End With
Next i
zei = zei + 1
Wend
Close #1
End Sub

Anzeige
AW: Bei mir kommt kein Fehler
30.08.2005 08:19:26
Michael
Danke euch beiden!
Ich werds gleich mal austesten!
Micha
AW: Bei mir kommt kein Fehler
30.08.2005 08:49:03
Michael
So, habs gestestet.
Mit einer kleinen Änderung funktioniert es perfekt!
Vielen dank dafür! :)
Grüße
Micha

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige