Do - Loop Schleife für Eingabe unterbrechen

Informationen und Beispiele zu den hier genannten Dialog-Elementen:
Bild

Betrifft: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 13:46:27

Hallo nochmal,
ich hab immer noch mein blödes (sorry) Problem beim Erfassen von Daten in einer Userform.
Eine Textbox (txtGesamtW) fragt mich nach der Anzahl der Personen. Ich gebe z.B. die Zahl drei ein.
jetzt öffnet sich ein Frame mit 4 Textboxen, die ich ausfülle. Sobald ich den CommandButten OK drücke, sollen die Daten in die letzte Zeile der Tabelle eingetragen werden, und die Textboxen leeren sich. Diese Prozedur geht so lange, wie die Anzahl der Personen ist.
mein Code lautet (Auszug)

Sub cmdOK_Click()
Dim x As Integer
Dim Anzahl As Integer
n = 2
Anzahl = Me.txtGesamtW
Do
    If n <= Anzahl Then
        With Me
            .fra3.Caption = "Person Nr. " & n
            .txtName = ""
            .txtVorname = ""
            .txtAlter = ""
            .txtEinzug = ""
        End With
        n = n + 1
        MsgBox "Persone eingetragen"
    Exit Sub
    End If
Loop
    If n > Anzahl Then
    MsgBox "Alle Wohnungen eingetragen"
    Unload Me
    End If
End Sub
Leider stoppt die Schleife nicht. Wo liegt denn mein Fehler?

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 13:50:05
Besser gesagt: Die Schleife stoppt zwar bei Exit Sub, aber sie läuft nicht weiter. Wie krieg ich das hin?

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Armin
Geschrieben am: 16.07.2015 13:58:26
SO:

Sub cmdOK_Click()
Dim x As Integer
Dim Anzahl As Integer
n = 2
Anzahl = Me.txtGesamtW
With Me
Do
    .fra3.Caption = "Person Nr. " & n
    .txtName = ""
    .txtVorname = ""
    .txtAlter = ""
    .txtEinzug = ""
    n = n + 1  
Loop Until n > Anzahl Then
End With
MsgBox "Alle Wohnungen eingetragen"
Unload Me
End Sub
Gruß Armin

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 14:09:09
Tut mir Leid Armin, das Funktioniert nicht. Er stoppt bei der Anweisung Loop until n > anzahl then und erwartet eine Anweisung. Wenn ich das then entferne, unterbricht er die Schleife leider nicht, um die textboxen neu zu befüllen.

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Armin
Geschrieben am: 16.07.2015 14:33:38
sorry, das "Then" muss natürlich noch weg!
Falls er die schleife nicht beendet solltest Du einmal Anzahl testen!
Gruß Armin

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 14:35:43
Die Schleife endet schon, aber zwischendurch hält sie nicht an, um die Textboxen mit anderen Werten zu befüllen.

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 14:35:58
Die Schleife endet schon, aber zwischendurch hält sie nicht an, um die Textboxen mit anderen Werten zu befüllen.

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Armin
Geschrieben am: 16.07.2015 14:46:06
Hallo,
was soll denn dann die Schleife? Ich vermute einfach nur mal so, dass Du an das Problem völlig falsch ran gehst. Besser wäre natürlich wenn Du ein Demo hoch lädst. Sonst reden wir morgen noch um Dein Problem zu klären und dann eine Lösung zu schreiben.

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 15:19:42
Das mach ich mal. Danke
https://www.herber.de/bbs/user/98864.xlsm
Dort liegt meine Testdatei. Vorab schon mal vielen Dank für die Zeit, die du für mich investierst.

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Rudi Maintaire
Geschrieben am: 16.07.2015 15:53:45
Hallo,

Private Sub CommandButton1_Click()
  
  Dim letzteZeile As Integer
  Static n As Integer
  Dim anzahl As Integer
  
  letzteZeile = Sheets(1).Cells(Rows.Count, 1).End(xlUp).Row
  
  anzahl = Me.TextBox2 * 1
  n = n + 1
  With Sheets(1)
    letzteZeile = .Cells(Rows.Count, 1).End(xlUp).Row
    .Cells(letzteZeile + 1, 1) = Me.TextBox1
    .Cells(letzteZeile + 1, 2) = Me.TextBox2
    .Cells(letzteZeile + 1, 3) = Me.TextBox3
    .Cells(letzteZeile + 1, 4) = Me.TextBox4
    .Cells(letzteZeile + 1, 5) = Me.TextBox5
  End With
  If n = anzahl Then
    Me.Hide
    Unload Me
  Else
    TextBox3 = ""
    TextBox4 = ""
    TextBox5 = ""
    TextBox3.SetFocus
  End If
  
End Sub

Das Chaos in den Textbox-Namen musst du selbst beheben.
Gruß
Rudi

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Armin
Geschrieben am: 16.07.2015 16:03:05
Hallo Ulli,
hier ein Muster.
https://www.herber.de/bbs/user/98868.xlsm
Gruß Armin

Bild

Betrifft: AW: Do - Loop Schleife für Eingabe unterbrechen
von: Uli
Geschrieben am: 16.07.2015 16:36:48
Lieber Rudi,
das war super. Vielen Dank dafür

 Bild

Beiträge aus den Excel-Beispielen zum Thema "Do - Loop Schleife für Eingabe unterbrechen"