VBA: konkretes Problem mit Array/Schleife

Hallo und ein Frohes neues Jahr !
ich habe folgenden Code erstellt:

Sub arrary2()

Dim liste(1 To 5) As Integer
Dim i As Integer
Dim x As Variant
Dim eingabe As String

Do
eingabe = InputBox("Wert eingeben ")
liste(i) = eingabe
i = i + 1

Loop Until (eingabe = „“)

For Each x In liste
MsgBox (x)
Next x

End Sub

Es sollen 5 Werte eingegeben werden bis man „“ eingibt. Warum funktioniert es hier mit einer „Do- Schleife“ nicht ?

Für hilfe bin ich sehr dankbar !

Gruß

Hallo Alexandro,

die Schleife funktioniert, nur die Abbruch-Bedingung nicht. Da die eingabe ein String und die Abbruchbedingung ein Integer ist. Zudem bekommst du ein Problem mit der Definition deisnes Arrays wenn du mehr als 5 Werte hast. GGf. solltest du dir Redim anschauen. Und dne im Text habe ich meine Vorschläge iengearbeitt.

Gruss
Nils

Sub arrary2()

Dim liste(1 To 5) As Integer
Dim i As Integer
Dim x As Variant
Dim eingabe As String

Do

If i > 5 Then
Exit Do
'alternativ: 'ReDim Preserve liste(1 To i)
End If

If i 0 Then liste(i) = Val(eingabe)

i = i + 1

Loop Until (eingabe = „“)

Hallo Nils,
vielen Dank für den Tip ! Doch was bewirkt ReDim bzw. Exit konkret ?

Gruß,
Alexandro

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Sub arrary2()

 Dim liste(1 To 5) As **Variant**
 Dim i As Integer
 Dim x As Variant
 Dim eingabe As String

**i = 1**

 Do
 eingabe = InputBox("Wert eingeben ")
 liste(i) = eingabe
 i = i + 1
 Loop Until (eingabe = "")


 For Each x In liste
 MsgBox (x)
 Next x

End Sub

Gruß, Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo !

mit for-EACH ist es kein Problem, meine Frage ist aber warum es mit einer Do- Schleife nicht funktioniert.

Gruß
Alexanro

Hallo,

Sub arrary2()


> Dim liste(1 To 5) As **Variant**  
> Dim i As Integer  
> Dim x As Variant  
> Dim eingabe As String  
>   
> **i = 1**  
>   
> Do  
> eingabe = InputBox("Wert eingeben ")  
> liste(i) = eingabe  
> i = i + 1  
> Loop Until (eingabe = "")  
>   
>   
> For Each x In liste  
> MsgBox (x)  
> Next x  
>   
> End Sub

Gruß, Bernd

Hallo und ein Frohes neues Jahr !
ich habe folgenden Code erstellt:

Sub arrary2()

Dim liste(1 To 5) As Integer
Dim i As Integer
Dim x As Variant
Dim eingabe As String

Do
eingabe = InputBox("Wert eingeben ")
liste(i) = eingabe
i = i + 1

Loop Until (eingabe = „“)

For Each x In liste
MsgBox (x)
Next x

End Sub

Es sollen 5 Werte eingegeben werden bis man „“ eingibt. Warum
funktioniert es hier mit einer „Do- Schleife“ nicht ?

Für hilfe bin ich sehr dankbar !

Gruß

Hallo,

ich verstehe Deine Frage nicht.

Natürlich ist Dein Code ziemlicher Spaghetti-Code. Aber mit den zwei Korrekturen von mir läuft er wenigstens.

mit for-EACH ist es kein Problem, meine Frage ist aber warum
es mit einer Do- Schleife nicht funktioniert.

Mit einer Do…Loop-Schleife würde es auch funktionieren, warum nicht?

Gruß, Bernd

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Mit der if-Then konstruktion fange ich den fall ab, dass der benutzer mehr als 5 werte eingibt (Dann gibt es keinen schleifenabbruch)
Dabei verlässt das exit-do die schleife und redim preserv erweitert das array.

Hallo Nils,
vielen Dank für den Tip ! Doch was bewirkt ReDim bzw. Exit
konkret ?

Gruß,
Alexandro

Hallo,
vielleicht habe ich mich meinerseits etwas unverständlich ausgedrückt bzw. das eigentliche problem ist dadurch nicht undeutlich geworden.

Meine konkrete Frage:

Kann ich eine Do-Loop Schleife verwenden wenn ich ein Array benutze oder kann man es nur mit FOR-Each auslesen ?
Wenn ja wie würe es ungefähr aussehen im Programm

Gruß
Alexandro

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]