Live-Forum - Die aktuellen Beiträge
Datum
Titel
17.10.2025 10:28:49
16.10.2025 17:40:39
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: VBA ausführen wenn Reitername XX enthält

VBA ausführen wenn Reitername XX enthält
22.09.2020 11:18:35
Lara
Hallo Zusammen,
aktuell habe ich 2 Makros:
Makro 1 kopiert einen Reiter in eine neue Arbeitsmappe, wenn der Reitername XXX enthält.
Sub Kopieren()
Dim Worksheet, Pfad
Dim wb As Workbook
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Pfad = Worksheets("YY").Range("A1")
For Each Worksheet In Worksheets
If Left(Worksheet.name, 4) = "XXX_" Then
Set wb = Workbooks.Add
Worksheet.Copy After:=wb.Sheets(wb.Sheets.Count)
wb.Worksheets(1).Delete
wb.SaveAs Filename:=Pfad & "\" & Worksheet.name
wb.Close saveChanges:=True
End If
Next
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub
Das zweite Makro sperrt und formatiert einen Reiter:
Sub Formatieren()
Dim Zelle As Range, Zaehler As Integer, Wert As Integer
Wert = CInt(Sheets("YY).Range("D4")) 'Anpassen
With ActiveSheet
.Unprotect  'Blattschutz aufheben
.Cells.Locked = True  'alle Zellen im Blatt sperren
For Each Zelle In .Range("F5:Q5")
Zaehler = Zaehler + 1
'Zellen nach Prüfung sperren
If Zaehler 

Nun möchte ich, dass dieses Makro für alle Reiter ausgeführt wird, die mit "XXX_" beginnen bevor diese Reiter kopiert und in eine neue Arbeitsmappe eingefügt werden.
Das ganze sieht aktuell bei mir so aus.

Sub Kopieren()
Dim Worksheet, Pfad
Dim wb As Workbook
Dim Zelle As Range, Zaehler As Integer, Wert As Integer
Wert = CInt(Sheets("YY).Range("D4")) 'Anpassen
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Pfad = Worksheets("YY").Range("A1")
For Each Worksheet In Worksheets
If Left(Worksheet.name, 4) = "XXX_" Then
With ActiveSheet
.Unprotect  'Blattschutz aufheben
.Cells.Locked = True  'alle Zellen im Blatt sperren
For Each Zelle In .Range("F5:Q5")
Zaehler = Zaehler + 1
'Zellen nach Prüfung sperren
If Zaehler 

Aber das Formatierungsmakro wird nicht ausgeführt.
Hat eine/r von euch eine Idee, woran es liegen könnte?
Vielen Dank und
Grüße
Lara
Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 11:38:45
peterk
Hallo
Statt

With ActiveSheet


With Worksheet

AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 13:12:17
Lara
Hallo Peter,
nein - klappt leider immer noch nicht.
Das Formatierungsmakro wird nicht ausgeführt. Es werden nur die files erstellt.
Viele Grüße,
Lara
Anzeige
AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 15:43:23
Peter
Hallo Lara,
vieleicht klapp es so (nicht getetstet)
Sub Kopieren()
Dim Worksheet, Pfad
Dim wb As Workbook
Dim Zelle As Range, Zaehler As Integer, Wert As Integer
Wert = CInt(Sheets("YY).Range("D4")) 'Anpassen
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Pfad = Worksheets("YY").Range("A1")
For Each Worksheet In Worksheets
If Left(Worksheet.Name, 4) = "XXX_" Then
With Sheets(Worksheet.Name)
.Unprotect  'Blattschutz aufheben
.Cells.Locked = True  'alle Zellen im Blatt sperren
For Each Zelle In .Range("F5:Q5")
Zaehler = Zaehler + 1
'Zellen nach Prüfung sperren
If Zaehler 
Viele Grüße
Peter (hpo)
Anzeige
AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 15:55:45
Lara
Hallo Peter (hpo),
leider funktioniert auch deine Lösung nicht.
Grüße,
Lara
Musterdatei?
22.09.2020 16:10:17
UweD
AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 11:42:42
UweD
Hallo
verzichte darauf Variablennamen wie VBA Befehle etc. zu benennen
so? ungetestet

Option Explicit
Sub Kopieren()
Dim ws, Pfad
Dim wb As Workbook
Dim Zelle As Range, Zaehler As Integer, Wert As Integer
Wert = CInt(Sheets("YY").Range("D4")) 'Anpassen
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Pfad = Worksheets("YY").Range("A1")
For Each ws In Worksheets
If Left(ws.Name, 4) = "XXX_" Then
With ws
.Unprotect  'Blattschutz aufheben
.Cells.Locked = True  'alle Zellen im Blatt sperren
For Each Zelle In .Range("F5:Q5")
Zaehler = Zaehler + 1
'Zellen nach Prüfung sperren
If Zaehler 
LG UweD
Anzeige
AW: VBA ausführen wenn Reitername XX enthält
22.09.2020 13:08:34
Lara
Hallo Uwe,
hat leider immer noch nicht geklappt.
Die neuen files werden zwar erstellt, aber das Formatieren und Sperren davor wird nicht durch geführt.
Grüße
Lara
AW: VBA ausführen wenn Reitername XX enthält
25.09.2020 12:11:07
Lara
Hallo Zusammen, Vielen Dank für Eure Unterstützung. Ich konnte mein Problem in der Zwischenzeit lösen =)
Grüße,
Lara
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige

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