Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1780to1784
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

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

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
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

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige