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 SubDas 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 < Wert Then Zelle.EntireColumn.Copy Zelle.EntireColumn.PasteSpecial xlPasteValues Application.CutCopyMode = False End If Zelle.EntireColumn.Locked = (Zaehler < Wert) Next Zelle .Protect 'Blattschutz setzen End With End Sub
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 < Wert Then Zelle.EntireColumn.Copy Zelle.EntireColumn.PasteSpecial xlPasteValues Application.CutCopyMode = False End If Zelle.EntireColumn.Locked = (Zaehler < Wert) Next Zelle .Protect 'Blattschutz setzen End With 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
With ActiveSheet
With Worksheet
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 < Wert Then Zelle.EntireColumn.Copy Zelle.EntireColumn.PasteSpecial xlPasteValues Application.CutCopyMode = False End If Zelle.EntireColumn.Locked = (Zaehler < Wert) Next Zelle .Protect 'Blattschutz setzen End With 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 SubViele Grüße
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 < Wert Then Zelle.EntireColumn.Copy Zelle.EntireColumn.PasteSpecial xlPasteValues Application.CutCopyMode = False End If Zelle.EntireColumn.Locked = (Zaehler < Wert) Next Zelle .Protect 'Blattschutz setzen End With Set wb = Workbooks.Add ws.Copy After:=wb.Sheets(wb.Sheets.Count) wb.Worksheets(1).Delete wb.SaveAs Filename:=Pfad & "\" & ws.Name wb.Close saveChanges:=True End If Next Application.ScreenUpdating = True Application.DisplayAlerts = True End SubLG UweD