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

Forumthread: Makro mit Bedingung neu starten

Makro mit Bedingung neu starten
03.02.2016 10:24:21
Patrick
Hallo zusammen,
zu meiner Situation:
Ich habe eine UserForm die bei Aufruf der Excel Mappe automatisch ausgeführt wird.
In dieser UserForm befinden sich Dropdowns mit Filtern und eine ListBox mit Multiselect.
Nach Drücken eines Buttons werden weitere Makros ausgeführt, die, basierend auf der getroffenen Auswahl, neue Dokumente erstellt.
Nun möchte ich nach Drücken des Buttons prüfen, ob überhaupt eine Auswahl getroffen wurde, ist ja auch ganz simpel.

For a = 0 To UserForm1.lstUebersicht.ListCount - 1
If UserForm1.lstUebersicht.selected(a) Then b = b + 1
Next a
If b = 0 Then
MsgBox "Bitte mindestens einen Datensatz auswählen!"
ElseIf b > 999 Then
MsgBox "Es dürfen maximal 1000 Datensätze ausgewählt werden."
End If
Nun Meine Frage:
Gibt es eine Möglichkeit innerhalb dieser Bedingung, die komplette Prozedur neu zu starten? D.h. von vorne zu beginnen ab einblenden der UserForm?
"End" ist zuviel des guten, da es den kompletten Ablauf beendet.
"Exit Sub" ist zu wenig, da ich die nachfolgenden Subs auf keinen Fall ausführen will.
Vielen Dank euch schon mal für eure Antworten.
Schönen Gruß,
Patrick

Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Makro mit Bedingung neu starten
03.02.2016 10:27:43
Rudi
Hallo,
"Exit Sub" ist zu wenig, da ich die nachfolgenden Subs auf keinen Fall ausführen will.
wie und wann werden die denn aufgerufen?
Gruß
Rudi

AW: Makro mit Bedingung neu starten
03.02.2016 10:37:14
Patrick
Mit einem Button auf der UserForm, der insgesamt zwei Call´s macht.
Der erste Call für das Sub in den dann auch die erwähnte Bedingung rein soll,
der zweite Call erstellt einen Serienbrief in Word. (Nach Beendigung des zweiten Calls ist die Verarbeitung zu Ende).
Hab gerade nochmal selbst ein wenig rumprobiert und komm mir etwas dumm vor wie einfach denn die Lösung ist ...
Habe den aktiven Sub mit "Exit Sub" verlassen. Im nachfolgenden dann die selbe Prüfung noch einmal eingebaut
- Problem gelöst!
Ist vielleicht nicht die schönste Lösung, aber sie funktioniert :)

Anzeige
AW: Makro mit Bedingung neu starten
03.02.2016 10:43:35
Rudi
Hallo,
dann würde ich eine globale Variable nehmen.
In ein Modul:
Public bolOK as boolean
In der ersten Prüfung setzt du die bei Erfolg auf True.
Vor dem 2. call:
If bolOK then
Call Makro2
End If
Gruß
Rudi

AW: Makro mit Bedingung neu starten
03.02.2016 12:11:16
Patrick
Hallo Rudi,
danke für deine Antwort. Deins ist wohl die elegantere Lösung :)
Schönen Gruß!
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Makro mit Bedingung neu starten in Excel


Schritt-für-Schritt-Anleitung

Um ein Makro in Excel mit einer Bedingung neu zu starten, kannst du folgende Vorgehensweise nutzen:

  1. UserForm erstellen: Erstelle eine UserForm mit Dropdowns und einer ListBox. Stelle sicher, dass die ListBox die Multiselect-Option aktiviert hat.

  2. Bedingung einfügen: Füge eine Schleife ein, um zu prüfen, ob eine Auswahl in der ListBox getroffen wurde:

    Dim b As Integer
    For a = 0 To UserForm1.lstUebersicht.ListCount - 1
       If UserForm1.lstUebersicht.selected(a) Then b = b + 1
    Next a
    If b = 0 Then
       MsgBox "Bitte mindestens einen Datensatz auswählen!"
    ElseIf b > 999 Then
       MsgBox "Es dürfen maximal 1000 Datensätze ausgewählt werden."
    End If
  3. Makro neu starten: Wenn keine Auswahl getroffen wurde, kannst du die UserForm erneut anzeigen, anstatt das Makro komplett zu beenden. Verwende dazu den Code:

    UserForm1.Show
  4. Exit Sub verwenden: Wenn die Bedingung nicht erfüllt ist, verlasse das aktuelle Sub mit Exit Sub, um die nachfolgenden Befehle zu verhindern.


Häufige Fehler und Lösungen

  • Fehler: Die UserForm schließt sich nach der Bedingung.

    • Lösung: Stelle sicher, dass du UserForm1.Show verwendest, um die UserForm wieder anzuzeigen.
  • Fehler: Der Code wird nicht ausgeführt, wenn die Bedingung nicht erfüllt ist.

    • Lösung: Überprüfe, ob die Schleife für die ListBox korrekt implementiert ist und dass du Exit Sub an der richtigen Stelle verwendest.

Alternative Methoden

Eine elegante Methode, um die Bedingung zu überprüfen und das Makro neu zu starten, ist die Verwendung einer globalen Variable. Hier ein Beispiel:

  1. Globale Variable deklarieren:

    Public bolOK As Boolean
  2. Bedingung setzen: Setze bolOK auf True, wenn eine Auswahl getroffen wurde.

  3. Bedingung vor dem zweiten Call prüfen:

    If bolOK Then
       Call Makro2
    End If

Diese Methode ermöglicht es dir, die Bedingung zwischen verschiedenen Subroutinen zu teilen.


Praktische Beispiele

Hier ist ein einfaches Beispiel, wie das Ganze in einem vollständigen Makro aussehen könnte:

Sub StartMakro()
    UserForm1.Show
End Sub

Sub Btn_Click()
    Dim b As Integer
    For a = 0 To UserForm1.lstUebersicht.ListCount - 1
        If UserForm1.lstUebersicht.selected(a) Then b = b + 1
    Next a
    If b = 0 Then
        MsgBox "Bitte mindestens einen Datensatz auswählen!"
        UserForm1.Show
        Exit Sub
    ElseIf b > 999 Then
        MsgBox "Es dürfen maximal 1000 Datensätze ausgewählt werden."
        Exit Sub
    End If
    ' Weitere Code hier
End Sub

Tipps für Profis

  • Debugging: Verwende Debug.Print, um den Status von Variablen während der Ausführung zu überprüfen.
  • Fehlerbehandlung: Implementiere On Error Resume Next, um Fehler abzufangen und die Ausführung nicht zu unterbrechen.
  • Modularität: Halte deine Makros modular, indem du häufig verwendete Funktionen in separate Subs auslagerst.

FAQ: Häufige Fragen

1. Wie kann ich sicherstellen, dass die Benutzerform immer wieder angezeigt wird? Durch die Verwendung von UserForm1.Show innerhalb der Bedingung, wenn keine Auswahl getroffen wurde.

2. Kann ich die Anzahl der auswählbaren Datensätze anpassen? Ja, ändere einfach die Zahl in der Bedingung If b > 999 Then auf deine gewünschte maximale Anzahl.

3. Funktioniert das in jeder Excel-Version? Die beschriebenen Methoden sind in den meisten Excel-Versionen anwendbar, insbesondere ab Excel 2007.

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