Dieses Forum nutzt Cookies
Dieses Forum verwendet Cookies, um deine Login-Informationen zu speichern, wenn du registriert bist, und deinen letzten Besuch, wenn du es nicht bist. Cookies sind kleine Textdokumente, die auf deinem Computer gespeichert werden. Die von diesem Forum gesetzten Cookies werden nur auf dieser Website verwendet und stellen kein Sicherheitsrisiko dar. Cookies aus diesem Forum speichern auch die spezifischen Themen, die du gelesen hast und wann du zum letzten Mal gelesen hast. Bitte bestätige, ob du diese Cookies akzeptierst oder ablehnst.

Ein Cookie wird in deinem Browser unabhängig von der Wahl gespeichert, um zu verhindern, dass dir diese Frage erneut gestellt wird. Du kannst deine Cookie-Einstellungen jederzeit über den Link in der Fußzeile ändern.

Excel VBA Makro als Schleife wieder von vorne starten
#1
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
Antworten Top
#2
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
Antworten Top
#3
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
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste