Clever-Excel-Forum

Normale Version: Excel VBA Makro als Schleife wieder von vorne starten
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Hallo Excelfreunde,
 
Am Ende meines Makros steht dieser Code, der bis dahin einwandfrei funktioniert:
 
If ActiveCell = "" Then
        MsgBox "In dieser Zelle steht kein Dateiname. Daher Abbruch."
        Exit Sub   'Makro wird abgebrochen
        End If    'Makro wird weiter durchgeführt

 Workbooks.Open (ThisWorkbook.Path & "\" & ActiveCell.Offset(0, 0).Range("A1").Value)  'die nächste kleine Datei wird geöffnet
Windows("Gesamtübersicht(J5).xlsm").Activate   'große Datei wird aktiviert
 
End Sub
 
Wie muss ein Code direkt vor „End Sub“ heißen, damit das Makro wieder nach vorne zum Anfang springt – quasi eine Schleife macht?
 
Vielen Dank im Voraus eure Hilfe.
 
Jorg
Hallo Jorg,

um Deine Frage genau zu beantworten:
Du kannst am Anfang der Sub eine Sprungmarke setzen und mit dem GOTO-Befehl dort hinspringen.

Da GOTO-Befehle heutzutage nicht mehr beliebt und professionell sind und die vielfache Benutzung auch zur Unübersichtlichkeit führt, ist es besser, Du nimmst eine der bekannten Schleifen und programmierst dort passende Rausspringer..... 

siehe Beispiel: 
Hinweis: Diese Schleife könnte eine Endlosschleife sein, weil sich die ActiveCell ggf. nicht ändert. Aber der Code ist ja auch nicht vollständig.

Code:

Sub Test1()
Anfang:
  If ActiveCell = "" Then
     MsgBox "In dieser Zelle steht kein Dateiname. Daher Abbruch."
     Exit Sub   'Makro wird abgebrochen
  End If    'Makro wird weiter durchgeführt

 Workbooks.Open (ThisWorkbook.Path & "\" & ActiveCell.Offset(0, 0).Range("A1").Value)  'die nächste kleine Datei wird geöffnet
 Windows("Gesamtübersicht(J5).xlsm").Activate   'große Datei wird aktiviert
 GoTo Anfang
End Sub

Sub Test2()
 Do
    If ActiveCell = "" Then
       MsgBox "In dieser Zelle steht kein Dateiname. Daher Abbruch."
       Exit Do   'Makro wird abgebrochen
    End If    'Makro wird weiter durchgeführt

    Workbooks.Open (ThisWorkbook.Path & "\" & ActiveCell.Offset(0, 0).Range("A1").Value)  'die nächste kleine Datei wird geöffnet
    Windows("Gesamtübersicht(J5).xlsm").Activate   'große Datei wird aktiviert
 Loop
End Sub

_________
viele Grüße
Karl-Heinz
Hallo Karl-Heinz

ganz, ganz herzlichen Dank für Deine klare Antwort. Ich habe beide Möglichkeiten probiert und werde mich für deinen 2. Vorschlag entscheiden.

Vielen, vielen Dank!

Jorg