Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: Code Wiederholen bis If erfüllt oder Abbruch

Code Wiederholen bis If erfüllt oder Abbruch
22.02.2020 13:12:37
Alex
Hallo ich mal wieder.
Ich habe folgenden Code. Ich möchte, dass dieser Code solange wiederholt wird bis man bei der 2. IF Bedingung entweder False hat und der Code weitergeht (Also er nicht zu Exit Sub kommt) oder bis man bei einer MsgBox (Try again?) mit vbYesNo auf no klickt.
Also im Grunde soll das zweite Exit Sub durch eine Abfrage, ob man das Ganze wiederholen oder abbrechen möchte ersetzt werden.
Mein Versuch mit Do / Loop scheiterte kläglich :-(
Dim leer As Variant
Dim rng As Range
MsgBox "Copy to Clipboard and click OK"
Sheets("Dev").Select
'Prüfung ob KEINE Daten in Zwischenspeicher
Set leer = CommandBars.FindControl _
(Type:=msoControlButton, ID:=22)
If leer.Enabled = False Then
MsgBox ("No Data in Clipboard.")
Sheets("Daily").Select
Exit Sub
Else
Range("A1").Select
ActiveSheet.Paste
Range("A22:B117").Select
For Each rng In Selection
If IsEmpty(rng) = True Then
MsgBox "At least one Value is empty. Please try again"
Sheets("Daily").Select
Exit Sub
End If
Next rng
End If
VG,
Alex
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Code Wiederholen bis If erfüllt oder Abbruch
22.02.2020 13:43:35
Hajo_Zi
Hallo Alex,
Option Explicit
Sub Test()
Dim InMsgBox As Integer
InMsgBox = MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNoCancel + _
vbQuestion, "Löschabfrage ?")
Select Case InMsgBox
Case 6
MsgBox "Ja"
Case 7
MsgBox "Nein"
Case 2
MsgBox "Abbrechen"
End Select
End Sub

Anzeige
AW: Code Wiederholen bis If erfüllt oder Abbruch
22.02.2020 14:07:29
Daniel
Hi
im Prinzip so:
Sub Name()
Do
If ... Then Exit Do
Select Case Msgbox ("try again?", vbOkCancel)
Case vbyes
Case vbCancel
Exit do
end select
Loop
Exit Sub
Gruß Daniel
AW: Code Wiederholen bis If erfüllt oder Abbruch
22.02.2020 14:11:41
Alex
Danke euch beiden!
@Daniel: Das Exit Do hatte ich bei mir ursprünglich nicht beachtet!
VG,
Alex
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Code Wiederholen bis If erfüllt oder Abbruch in Excel VBA


Schritt-für-Schritt-Anleitung

Um einen Excel VBA-Code wiederholt auszuführen, bis eine bestimmte Bedingung erfüllt ist oder der Benutzer abbricht, kannst du die Do...Loop-Struktur nutzen. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Erstelle ein neues Modul in deiner Excel-Arbeitsmappe.

  2. Füge den folgenden Code ein:

    Sub WiederholenBisBedingung()
       Dim InMsgBox As Integer
       Do
           ' Deine Bedingungen hier
           If ... Then Exit Do
    
           InMsgBox = MsgBox("Try again?", vbYesNo)
           If InMsgBox = vbNo Then Exit Do
       Loop
    End Sub
  3. Ersetze die ... im If-Statement durch deine spezifische Bedingung, die überprüft werden soll.

  4. Starte das Makro und beobachte, wie es die Abfragen durchführt.


Häufige Fehler und Lösungen

  • Fehler: Exit Do wird nicht erreicht
    Lösung: Stelle sicher, dass deine If-Bedingung korrekt formuliert ist. Es muss ein klarer Ausstiegspunkt definiert sein.

  • Fehler: Endlosschleife
    Lösung: Überprüfe, ob deine Bedingung im If-Statement tatsächlich irgendwann True wird oder ob der Benutzer die Möglichkeit hat, das Makro abzubrechen.


Alternative Methoden

Eine alternative Methode ist die Verwendung von Select Case, wie es von Hajo_Zi im Forum vorgeschlagen wurde. Hier ein Beispiel:

Sub Test()
    Dim InMsgBox As Integer
    InMsgBox = MsgBox("Wollen Sie den Auftrag wirklich löschen.", vbYesNoCancel + vbQuestion, "Löschabfrage?")
    Select Case InMsgBox
        Case vbYes
            ' Code für Ja
        Case vbNo
            ' Code für Nein
        Case vbCancel
            ' Code für Abbrechen
    End Select
End Sub

Diese Methode erlaubt es dir, unterschiedliche Aktionen basierend auf der Benutzerentscheidung durchzuführen.


Praktische Beispiele

Hier ist ein praktisches Beispiel für das Wiederholen eines Codes bis eine Bedingung erfüllt ist:

Sub CopyData()
    Dim leer As Variant
    Dim rng As Range
    Do
        MsgBox "Copy to Clipboard and click OK"
        Sheets("Dev").Select
        Set leer = CommandBars.FindControl(Type:=msoControlButton, ID:=22)

        If leer.Enabled = False Then
            MsgBox ("No Data in Clipboard.")
            Exit Do
        Else
            Range("A1").Select
            ActiveSheet.Paste
            Range("A22:B117").Select
            For Each rng In Selection
                If IsEmpty(rng) Then
                    MsgBox "At least one Value is empty. Please try again"
                    Exit Do
                End If
            Next rng
        End If

        If MsgBox("Try again?", vbYesNo) = vbNo Then Exit Do
    Loop
End Sub

Tipps für Profis

  • Verwende Option Explicit: Dies zwingt dich, alle Variablen zu deklarieren, was zu weniger Fehlern und besserer Lesbarkeit führt.
  • Teste den Code schrittweise: Nutze die F8-Taste im VBA-Editor, um den Code Schritt für Schritt auszuführen und Fehler leichter zu finden.
  • Kommentiere deinen Code: Füge Kommentare hinzu, um die Funktionsweise deiner Bedingungen und Schleifen zu erklären.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Schleife nicht endlos läuft?
Verwende eine klar definierte Bedingung für das Exit Do und ermögliche dem Benutzer, die Schleife abzubrechen.

2. Was ist der Unterschied zwischen MsgBox und InputBox?
MsgBox zeigt nur Informationen und Optionen an, während InputBox es dem Benutzer ermöglicht, Eingaben zu tätigen.

3. Wie kann ich mehrere Bedingungen in einer Schleife prüfen?
Verwende logische Operatoren wie And und Or in deinem If-Statement, um mehrere Bedingungen zu kombinieren.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige