Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1496to1500
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Vorzeitig aus einer For-Schleife springen?

Vorzeitig aus einer For-Schleife springen?
10.06.2016 19:56:01
Noureddine
Hallo zusammen,
wie kann ich hier von der For-Schleife vorzeitig austreten und das Makro weiter durchführen.
Also, sobald er das ELSE erreicht und ein neues Tabellenblatt erstellt + unbenennen, möchte ich aus der Schleife raus.
Könnt hier mir hierbei helfen?
Vielen Dank vorab.
Mien Ansatz sieht so aus:

Sub Makro1()
' Makro1 Makro
Dim i As Integer
Dim Abfrage As Byte
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "DATEN" Then
Abfrage = MsgBox("Tabellenblatt existiert bereits. Anlegen, mit dem Namen " & "DATEN " & _
Worksheets.Count & "?", 1, "Hinweis")
If Abfrage = 1 Then
Sheets.Add , Worksheets(Worksheets.Count)
ActiveSheet.Name = "DATEN " & Worksheets.Count
End If
Else
Sheets.Add , Worksheets(Worksheets.Count)
ActiveSheet.Name = "DATEN " & Worksheets.Count
End If
Next
End Sub

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
10.06.2016 19:59:10
Hajo_Zi
Exit For

AW: Vorzeitig aus einer For-Schleife springen?
10.06.2016 20:16:00
Noureddine
Hallo Hajo_Zi,
danke für die schnelle Antwort.
Ich habs jetzt eingesetzt. Aber es funktoniert nicht wie geplant!
Mein Ziel:
Erstell ein Tabellenblatt und benennen ihn um (txtMonat & txtJahr & " Daten"). Wenn dieser bereits vorhanden ist - Abfragen, ob ein neues Tabellenblatt erstellt werden soll mit den Namen
(txtMonat & txtJahr & " Daten" & "(++)").
Kannst du mir dabei helfen und mir sagen wo der Fehler liegt?
Danke nochmals.

AW: Vorzeitig aus einer For-Schleife springen?
10.06.2016 20:23:23
Hajo_Zi
ich habe auf den Beitrag geantwortet und da Stand nach Else verlassen.
Gruß Hajo

Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
10.06.2016 23:20:09
MatthiasG
Hallo Noureddine,
ohne genaue Prüfung:
schau mal ob der Schleifenzähler trotz Exit For noch eins hochzählt, dann musst du vorher denselben um 1 erniedrigen.
Gruß Matthias

AW: Stimmt, dass passiert nur, wenn...
11.06.2016 11:56:14
MatthiasG
... man die Schleife zu Ende laufen lässt:

Sub test()
Dim a As Integer
For a = 1 To 10
Next
Debug.Print a
End Sub

Ausgabe: 11
Gruß Matthias

Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
11.06.2016 14:06:15
mpb
Hallo,
ungetestet:
Sub Makro1()
' Makro1 Makro
Dim x As Integer
Dim i As Integer
Dim Abfrage As Byte
x = Worksheets.Count
For i = 1 To Worksheets.Count
If Worksheets(i).Name = "DATEN" Then
Abfrage = MsgBox("Tabellenblatt existiert bereits. Anlegen, mit dem Namen " & " _
DATEN " & _
Worksheets.Count & "?", 1, "Hinweis")
If Abfrage = 1 Then
Sheets.Add , Worksheets(Worksheets.Count)
ActiveSheet.Name = "DATEN " & Worksheets.Count
End If
Else
Sheets.Add , Worksheets(Worksheets.Count)
ActiveSheet.Name = "DATEN " & Worksheets.Count
End If
If x 

Gruß
Martin

Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
11.06.2016 14:52:05
mpb
Hallo,
noch eine Alternative, um ohne Schleife festzustellen, ob es eine Tabelle schon gibt:
Sub Blattname()
On Error Resume Next
Worksheets("Daten").Activate
If Err.numer = 9 Then
MsgBox "Tabelle vorhanden"
Else
MsgBox "Tabelle nicht vorhanden"
End If
End Sub
Gruß
Martin

AW: Vorzeitig aus einer For-Schleife springen?
11.06.2016 15:11:37
Daniel
Im Prinzip ne gute Idee, hier mal der korrekte Code:
Sub Blattname()
On Error Resume Next
Worksheets("Daten").Activate
If Err.Number = 0 Then
MsgBox "Tabelle vorhanden"
Else
MsgBox "Tabelle nicht vorhanden"
End If
End Sub

wenn du versuchst das Blatt zu aktivieren, wird nicht der Fehler 9 ausgegeben, sondern der Fehler 1004 weil das Aktivieren fehlschlägt und dieser Fehler wohl Vorrang vor dem Fehler 9 hat.
Fehler 9 entsteht bspw bei Set wsh = Worksheets("Daten")
(was hier auch vorzuziehen wäre, wenn man Bildschirmflackern vermeiden will)
Gruß Daniel

Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
12.06.2016 10:27:33
mpb
Hallo Daniel,
bei mir kam Fehler 9.
Gruß
Mrtin

AW: Vorzeitig aus einer For-Schleife springen?
11.06.2016 14:24:10
Daniel
Hi
also ich würde die Schleife komplett durchlaufen lassen und dabei mitzählen, wieviele Blätter mit "Daten" du schon hast um dann einen passenden Namen vergeben zu können.
Sub Blatt_Einfügen()
Dim i As Long
Dim Zähler As Long
For i = 1 To ActiveWorkbook.Sheets.Count
If Sheets(i).Name Like "Daten*" Then Zähler = Zähler + 1
Next
If Zähler = 0 Then
Worksheets.Add after:=Sheets(i - 1)
ActiveSheet.Name = "Daten"
Else
Select Case MsgBox("Es besteht bereits ein oder mehrere Datenblätter." & vbLf & _
"Trotzdem neu anlegen als ""Daten " & Zähler + 1 & """?", vbQuestion +  _
vbYesNo)
Case vbYes
Worksheets.Add after:=Sheets(i - 1)
ActiveSheet.Name = "Daten " & Zähler + 1
Case Else
End Select
End If
End Sub

Gruß Daniel

Anzeige
AW: Vorzeitig aus einer For-Schleife springen?
11.06.2016 16:01:19
Noureddine
Danke Daniel, genau so etwas habe ich gesucht.
Und auch an die anderen, Vielen Dank!
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige
Archiv - Verwandte Themen