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]