Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Blattschutz ohne Makro zu stören

Forumthread: Blattschutz ohne Makro zu stören

Blattschutz ohne Makro zu stören
19.04.2019 10:49:36
Babs
Hallo Liebe Profis!
also ich habe eine Arbeitsmappe mit ca. 30 Tabellenblättern - im Tabellenblatt 'Materialanfoderung' ist ein Formular das sich ausfüllt und Löscht je dach dem welchen Button man drückt. (Formular Ausfüllen, Mail Senden und Listen Löschen.
Mein Problem ist das wenn ich einen Blattschutz erstelle alle meine VBA´s nicht mehr laufen :-(
Hat jemand eine Idee wie ich vermeiden kann das der Blattschutz meine Makros stört und umgekehrt doch ein Blattschutz möglich ist?
u.a. die Makros die ich habe:
dieses sorgt dafür das die Liste auf Tabellenblatt Materialanforderung ausgefüllt wird


Private Sub CommandButton1_Click()
Dim z, nr, zz
z = 22
For nr = 1 To 29
With Sheets("Produktgruppe" & Trim(Str(nr)))
For zz = 3 To 1000
If .Cells(zz, 2)  "" Then
Cells(z, 8) = .Cells(zz, 2)
Cells(z, 10) = .Cells(zz, 4)
Cells(z, 12) = .Cells(zz, 3)
Cells(z, 14) = .Cells(zz, 7)
Cells(z, 16) = .Cells(zz, 5)
Cells(z, 18) = .Cells(zz, 6)
Cells(z, 22) = .Cells(zz, 8)
Cells(z, 24) = .Cells(zz, 9)
Cells(z, 26) = .Cells(zz, 10)
z = z + 2
End If
Next zz
End With
Next nr
End Sub

der Löscht die Listen und das Formular
Private Sub CommandButton2_Click()
Dim nr As Long
For nr = 1 To 29
With Sheets("Produktgruppe" & CStr(nr))
If .Cells(.Rows.Count, 2).End(xlUp).Row > 2 Then
.Range(.Cells(3, 2), .Cells(.Cells(.Rows.Count, 2) _
.End(xlUp).Row, 2)).ClearContents
End If
If .Cells(.Rows.Count, 3).End(xlUp).Row > 2 Then
.Range(.Cells(3, 3), .Cells(.Cells(.Rows.Count, 3) _
.End(xlUp).Row, 3)).ClearContents
End If
End With
Next nr
Range("H22:xZ200").Select
Selection.ClearContents
Range("H22").Select
End Sub
der senden das Formular an ein Mail als Anlage
Private Sub CommandButton4_Click()
Dim Nachricht As Object, OutApp As Object
Set OutApp = CreateObject("Outlook.Application")
Dim AWS As String, wksMail As Worksheet
Set wksMail = Sheets(3)
AWS = Environ("USERPROFILE") & "\" & wksMail.Name & ".xls"
'temporäre Mappe erstellen
wksMail.Copy
With ActiveWorkbook
.SaveAs AWS
.Close
End With
Application.Visible = True
Set Nachricht = OutApp.CreateItem(0)
With Nachricht
.To = "test@test.at"
.Cc = Range("R11")
.Subject = "Materialanforderung zu " & Range("L13")
.Attachments.Add AWS
.Body = "Hallo, anbei eine Materialanforderung bitte um Bearbeitung. Siehe File in der  _
Anlage. Danke" & vbCrLf & ""
.Display
End With
Set OutApp = Nothing
Set Nachricht = Nothing
Kill AWS 'temporäre Mappe löschen
End Sub


und das ist einfach ein Datumsfeld

'Datumsfeld

Private Sub DTPicker21_CallbackKeyDown(ByVal KeyCode As Integer, ByVal Shift As Integer, ByVal   _
_
_
CallbackField As String, CallbackDate As Date)
End Sub

Wäre echt Toll wenn jemand eine Idee hat!
Vielen dank
Babs
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:01:52
Hajo_Zi
heben den Balttschutz zu Begoinn auf .unprotect und setze ihn am Ende .protect.

Beiträge von Werner, Luc, robert, J.O.Maximo und folgende lese ich nicht.
Die Beiträge werden auch ignoriert, es erfolgt keine Antwort.
Hier ist eine ausführliche...
19.04.2019 11:02:22
Case
Hallo, :-)
... Erklärung: ;-)
UserInterfaceOnly...
Servus
Case

Anzeige
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:03:51
Werner
Hallo Babs,
einfach dein gewünschtes Blatt Schützen mit Passwort.
Im Workbook_Open dann folgenden Code:
Private Sub Workbook_Open()
Worksheets("DeinBlatt").Protect Password:="DeinPasswort", UserInterfaceOnly:=True
End Sub
Dann dürfen Änderungen am geschützten Blatt durch Markors vorgenommen werden, ohne dass dafür der Blattschutz aufgehoben werden muss.
Gruß Werner
Anzeige
AW: Blattschutz ohne Makro zu stören
19.04.2019 11:15:17
Daniel
Hi
Es ist in Excel grundsätzlich so, dass ein Makro immer nur das machen kann, was auch dem Anwender erlaubt ist.
Wenn du also auf einem geschützten Blatt mit Makro arbeiten willst, musst das Makro dass Passwort kennen und im Code dann den Schutz aufheben (unprotect) und am Ende wieder aktivieren (protect)
Wenn du jetzt viele Makros hast und nicht jedes umarbeiten willst, könntest du noch folgendes tun:
Schreibe ein Macro, welches bei jedem Blatt den Schutz Aktiviert und dabei den Parameter "userinterfaceonly:=true" verwendet.
Sheets(...).Protect password:="xxx“, userinterfaceonly:=true

Damit geschützt gilt der Schutz nur für den Anwender und nicht für die Macros, für dann ungestört arbeiten können.
Allerdings muss dieses Makro dann bei jedem Öffnen erneut ausgeführt werden (z.b. Im WorkbooksOpen-Event), da das nur für eine Sitzung gilt und beim nächsten öffnen der Schutz wieder vollständig ist.
Gruß Daniel
Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Blattschutz in Excel ohne Makro-Probleme


Schritt-für-Schritt-Anleitung

  1. Arbeitsmappe öffnen: Starte Excel und öffne die Arbeitsmappe mit den zu schützenden Blättern.
  2. Blatt schützen: Klicke mit der rechten Maustaste auf das gewünschte Blatt und wähle „Blatt schützen“. Vergib ein Passwort, wenn nötig.
  3. VBA-Code einfügen:

    • Drücke ALT + F11, um den VBA-Editor zu öffnen.
    • Füge den folgenden Code in das „DieseArbeitsmappe“-Modul ein:
    Private Sub Workbook_Open()
       Worksheets("DeinBlatt").Protect Password:="DeinPasswort", UserInterfaceOnly:=True
    End Sub
    • Ersetze "DeinBlatt" und "DeinPasswort" durch die entsprechenden Werte.
  4. Makros anpassen: Stelle sicher, dass alle Makros, die auf geschützte Bereiche zugreifen, den Blattschutz aufheben und wieder aktivieren. Verwende den folgenden Code als Vorlage:

    Sub BeispielMakro()
       Worksheets("DeinBlatt").Unprotect Password:="DeinPasswort"
    
       ' Dein Makro-Code hier
    
       Worksheets("DeinBlatt").Protect Password:="DeinPasswort"
    End Sub

Häufige Fehler und Lösungen

  • Fehler: Makros funktionieren nicht auf geschützten Blättern.

    • Lösung: Stelle sicher, dass dein Makro den Blattschutz mit Unprotect aufhebt, bevor es Änderungen vornimmt, und den Schutz danach wieder mit Protect aktiviert.
  • Fehler: Der Blattschutz wird bei jedem Öffnen der Arbeitsmappe zurückgesetzt.

    • Lösung: Verwende den Workbook_Open-Event, um den Blattschutz erneut zu aktivieren, wie in der Schritt-für-Schritt-Anleitung beschrieben.

Alternative Methoden

  • UserInterfaceOnly: Diese Einstellung erlaubt Makros, Änderungen an geschützten Blättern vorzunehmen, ohne dass der Blattschutz aufgehoben werden muss. Du musst den UserInterfaceOnly-Parameter beim Schützen der Blätter verwenden, wie im VBA-Code gezeigt.

  • Excel mehrere Blätter schützen ohne Makro: Wenn du mehrere Blätter schützen möchtest, kannst du dies manuell tun, indem du den Schutz für jedes Blatt einzeln aktivierst. Alternativ kannst du auch ein Makro erstellen, das alle gewünschten Blätter in einem Schritt schützt:

    Sub SchützeMehrereBlätter()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           ws.Protect Password:="DeinPasswort"
       Next ws
    End Sub

Praktische Beispiele

  • Beispiel 1: Du hast eine Arbeitsmappe mit 30 Tabellenblättern. Verwende den folgenden Code, um alle Blätter zu schützen und den Blattschutz für Makros zu aktivieren:

    Private Sub Workbook_Open()
       Dim ws As Worksheet
       For Each ws In ThisWorkbook.Worksheets
           ws.Protect Password:="DeinPasswort", UserInterfaceOnly:=True
       Next ws
    End Sub
  • Beispiel 2: Um ein spezifisches Blatt zu schützen und gleichzeitig Makros darauf zuzulassen, verwende den Protect-Befehl mit UserInterfaceOnly:

    Worksheets("Materialanforderung").Protect Password:="DeinPasswort", UserInterfaceOnly:=True

Tipps für Profis

  • Passwortsicherheit: Wähle ein sicheres Passwort für den Blattschutz und verwalte es sicher.
  • Dokumentation: Halte alle Änderungen und VBA-Codes gut dokumentiert, um späteres Troubleshooting zu erleichtern.
  • Testen: Teste alle Makros nach dem Hinzufügen des Blattschutzes, um sicherzustellen, dass sie wie gewünscht funktionieren.

FAQ: Häufige Fragen

1. Funktioniert der Blattschutz auch in älteren Excel-Versionen?
Ja, der Blattschutz ist in allen modernen Excel-Versionen vorhanden, jedoch können sich die genauen Schritte leicht unterscheiden.

2. Was passiert, wenn ich das Passwort für den Blattschutz vergesse?
Wenn du das Passwort vergisst, gibt es keine einfache Möglichkeit, den Blattschutz aufzuheben. Du müsstest ein Passwort-Wiederherstellungstool verwenden oder ein neues Blatt erstellen und die Daten manuell übertragen.

3. Kann ich den Blattschutz für bestimmte Zellen aufheben?
Ja, bevor du das Blatt schützt, kannst du bestimmte Zellen oder Bereiche entsperren, indem du sie auswählst und im Formatierungsmenü die Option „Zelle sperren“ deaktivierst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige