Private datei(0 To 2) As String
Private Sub msg\_Click()
Call WordDateien
For Each Item In datei
MsgBox (datei(i))
Next Item
End Sub
Sub WordDateien()
datei(0) = "test1"
datei(1) = "test2"
datei(2) = "test3"
End Sub
Jetzt kurz mein Problem:
Warum ist meine datei(i) immer „test1“ auch wenn (beim schrittweisen durchgehen) bei Item (mit der Maus darüberfahren) der nächste Eintrag angezeigt wird?
Private Sub msg_Click()
Call WordDateien
For Each Item In datei
MsgBox (datei(i))
Next Item
End Sub
Warum ist meine datei(i) immer „test1“ auch wenn (beim
schrittweisen durchgehen) bei Item (mit der Maus
darüberfahren) der nächste Eintrag angezeigt wird?
Hallo MPunkt,
weil i immer 0 ist.
Private Sub msg\_Click()
Dim i
Call WordDateien
For i = LBound(datei) To UBound(datei)
MsgBox datei(i)
Next i
End Sub
Warum ist meine datei(i) immer „test1“ auch wenn (beim
schrittweisen durchgehen) bei Item (mit der Maus
darüberfahren) der nächste Eintrag angezeigt wird?
weil i mit Null initialisiert wird und nie geändert.
Füge in Deine Schleife mal ein:
i = i + 1
Anders wäre es bei For i = 0 to 2 …
Aber das hast Du nicht, Du hast
For each …
und da kommt kein i vor.
Erstaunt bin ich, daß Deine Schleife überhaupt läuft.
Das kann eigentlich nur gehen, wenn ‚Datei‘ nicht wie bei Dir ein Array ist, sondern ein Objekt, das eine Eigenschaft ‚Item‘ hat.
Wenn das Array später variabel größer werden soll, würde das bei mir etwa so aussehen:
Dim Datei() As String
Private Sub msg\_Click()
WordDateien
For i = LBound(Datei) To UBound(Datei)
MsgBox Datei(i)
Next
End Sub
Private Sub WordDateien()
ReDim Datei(2)
Datei(0) = "test1"
Datei(1) = "test2"
Datei(2) = "test3"
End Sub
(VB6.0) Mit VBA kenne ich mich leider nicht so gut aus, was Du geschreiben hast war ja aber noch VB.
Jetzt kurz mein Problem:
Warum ist meine datei(i) immer „test1“ auch wenn (beim
schrittweisen durchgehen) bei Item (mit der Maus
darüberfahren) der nächste Eintrag angezeigt wird?
ich habs jetzt mit LBound und UBound gelöst.
Abgesehen von der Lösung hab ich durch eure Antworten die Schleifen-Funktion um einiges besser verstanden.
Also nochmals ein herzliches Dankeschön,
mfg MPunkt
Erstaunt bin ich, daß Deine Schleife überhaupt läuft.
Das kann eigentlich nur gehen, wenn ‚Datei‘ nicht wie bei Dir
ein Array ist, sondern ein Objekt, das eine Eigenschaft ‚Item‘
hat.
Hallo Rainer,
ich glaube MPunkt hat da das getan was man tunlichst unterlassen sollte.
Er hat einer Variablen den gleichen Namen von etwas gegeben was Vba auch kennt und auch du denkst bei Item logischerweise an etwas anderes.
Bei dieser Namensgebung
For Each myItem In datei
wärst du nicht irritiert gewesen.
Persönlich finde ich es inkonsequent von Vba, vielleicht auch Vb sowas durchgehen zu lassen.
Wie z.B. das da
Sub Stop()
das lehnt der Debugger (in Vba) völlig ab weil er „Stop“ als etwas anderes kennt.
For Each myItem In datei
wärst du nicht irritiert gewesen.
Doch. For Each kannte ich in dieser Verwendung nicht.
Dann hätte ich erwartet, daß Datei ein Objekt sein muss, das eine Eigenschaft ‚myItem‘ hat.
Deshalb habe ich mal etwas verrücktes getippt und erwartet, daß der Code nicht läuft.
Private Sub Command1\_Click()
Dim arr(10) As Integer
For i = 0 To 10
arr(i) = i
Next
For Each i In arr
MsgBox i
Next
End Sub
Ich hab’ mich aber geirrt, VB arbeitet das tatsächlich ab.
Persönlich finde ich es inkonsequent von Vba, vielleicht auch
Vb sowas durchgehen zu lassen.
Wie z.B. das da
Sub Stop()
das lehnt der Debugger (in Vba) völlig ab weil er „Stop“ als
etwas anderes kennt.
Item ist ja nur eine Eigenschaft, kein Schlüsselwort. Das lässt VB durchgehen.