Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA: Zeile Löschen trotz Blattschutz

Forumthread: VBA: Zeile Löschen trotz Blattschutz

VBA: Zeile Löschen trotz Blattschutz
Mathias
Hallo zusammen!
Ich bräuchte nochmals Hilfe. Habe zwar einige Bausteine gefunden, aber alles nicht das, was ich will.
Ich habe in Excel mehrere Tabellenblätter.
Darin sind einzelne Spalten geschützt
Wenn ich über eine Userform-Formular etwas in die Excel-Tabelle eintragen möchte, geht das bisher super mit:
with sheets("Tabelle 1")
.unprotect Passwort:="123"
.cells(erste_freie_Zeile, 3) = "Auszahlung an " + ComboBox1.Text
.protect Passwort:="123"
end with
klappt einwandfrei in allen Variationen.
Auch folgender Code funktioniert top - allerdings nur, wenn die Zellen, Zeilen, Spalten nicht geschützt sind
Worksheets("Gesamtstand").Select
Range("A1:A65536").Select
Dim cell As Object
For Each cell In Selection
If cell.Value = ComboBox1.Value Then cell.EntireRow.Delete
Next
Wie kann ich hier mit 'unprotect' und 'protect' arbeiten?
Oder welche Lösung gibt es sonst noch
Anzeige

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

Betreff
Benutzer
Anzeige
AW: VBA: Zeile Löschen trotz Blattschutz
25.08.2009 12:02:31
tursiops
  • Hallo!
    Schreib doch zwei separates Makros für den Blattschutz und arbeite anschließen mit Application.run "Blattschutz_an" bzw. "Blattschutz_aus". Die kannst Du dann später immer wieder verwenden.
    Gruß Frank
  • AW: VBA: Zeile Löschen trotz Blattschutz
    25.08.2009 12:46:13
    Jens
    Hallo Mathias
    Zeilen löschen IMMER von unten nach oben, sonst gibt das Probleme.
    Und spar Dir das ganze ge-select-e :o)
    Versuch mal so:
    Dim LoI as long
    With Worksheets("Gesamtstand")
    .Unprotect "Passwort"
    For LoI =65536 to 1 Step -1
    If .Cells(LoI,1) = ComboBox1.Value Then .Rows(LoI).Delete
    Next
    .Protect "Passwort"
    End With
    Gruß aus dem Sauerland
    Jens
    Anzeige
    AW: VBA: Zeile Löschen trotz Blattschutz
    25.08.2009 12:05:09
    tursiops
    Nachtrag:
    Sub Blattschutz_aus()
    ActiveSheet.Unprotect Password:="123"
    End Sub
    

    Sub Blattschutz_aus()
    ActiveSheet.Protect DrawingObjects:=True, Contents:=True, Scenarios:=True, Password:="123"
    ActiveSheet.EnableSelection = xlUnlockedCells 'falls gewünscht
    End Sub
    

    Gruß tursiops
    Anzeige
    AW: VBA: Zeile Löschen trotz Blattschutz
    25.08.2009 13:08:12
    Mathias
    Ich danke euch schon mal für die Antworten.
    Kann es zeitlich im Moment nicht ausprobieren.
    Feedback kommt dann später!
    ;
    Anzeige
    Anzeige

    Infobox / Tutorial

    Zeilen Löschen in Excel trotz Blattschutz mit VBA


    Schritt-für-Schritt-Anleitung

    Um Zeilen in Excel zu löschen, während ein Blattschutz aktiv ist, kannst du den folgenden VBA-Code verwenden. Dieser Code wird zuerst das Blatt entsperren, dann die Zeilen löschen und anschließend das Blatt wieder schützen.

    1. Öffne dein Excel-Dokument und drücke ALT + F11, um den VBA-Editor zu öffnen.
    2. Klicke auf Einfügen > Modul, um ein neues Modul zu erstellen.
    3. Füge den folgenden Code in das Modul ein:
    Sub ZeilenLoeschen()
        Dim LoI As Long
        With Worksheets("Gesamtstand")
            .Unprotect "123" ' Passwort zum Entsperren des Blattes
            For LoI = 65536 To 1 Step -1 ' Löschen von unten nach oben
                If .Cells(LoI, 1).Value = ComboBox1.Value Then
                    .Rows(LoI).Delete
                End If
            Next LoI
            .Protect "123" ' Passwort zum Schützen des Blattes
        End With
    End Sub
    1. Schließe den VBA-Editor und kehre zu Excel zurück.
    2. Füge ein Userform hinzu, das eine ComboBox enthält, in die du Werte eingeben kannst.
    3. Verknüpfe das Userform mit dem Makro, um die Zeilen zu löschen.

    Häufige Fehler und Lösungen

    • Fehler: "Schutzfehler"

      • Lösung: Stelle sicher, dass das Passwort korrekt ist und dass du das Blatt vorher mit .Unprotect entsperrst.
    • Fehler: "Zellen können nicht gelöscht werden"

      • Lösung: Überprüfe, ob das Blatt eventuell durch andere Einstellungen geschützt ist, wie z.B. durch das Sperren von Zellbereichen.
    • Fehler: "ComboBox1 ist nicht definiert"

      • Lösung: Vergewissere dich, dass die ComboBox im Userform korrekt benannt ist und dass der VBA-Code darauf zugreifen kann.

    Alternative Methoden

    Eine alternative Methode, um Zeilen zu löschen, besteht darin, separate Makros für das Entsperren und Schützen des Blattes zu erstellen. Diese Makros können dann vor und nach dem Löschvorgang aufgerufen werden:

    Sub BlattschutzAus()
        ActiveSheet.Unprotect Password:="123"
    End Sub
    
    Sub BlattschutzAn()
        ActiveSheet.Protect Password:="123", DrawingObjects:=True, Contents:=True, Scenarios:=True
    End Sub

    Verwende Application.Run "BlattschutzAus" und Application.Run "BlattschutzAn" in deinem Hauptmakro.


    Praktische Beispiele

    Ein Beispiel für die Verwendung einer ComboBox, um Werte in eine Excel-Tabelle einzutragen und gleichzeitig Zeilen zu löschen:

    Private Sub CommandButton1_Click()
        Call BlattschutzAus
        ZeilenLoeschen
        Call BlattschutzAn
    End Sub

    Hierbei wird das Blatt zuerst entsperrt, die Löschroutine aufgerufen und anschließend wieder geschützt.


    Tipps für Profis

    • Verwende Option Explicit: Setze am Anfang deines Moduls Option Explicit, um sicherzustellen, dass alle Variablen deklariert sind, was die Fehlersuche erleichtert.
    • Testen der Makros: Teste deine Makros immer in einer Kopie der Datei, um Datenverlust zu vermeiden.
    • Debugging: Nutze den Debugger im VBA-Editor, um den Code schrittweise auszuführen und Probleme zu identifizieren.

    FAQ: Häufige Fragen

    1. Wie kann ich den Blattschutz mit einem anderen Passwort einstellen?
    Ändere einfach die Passworte in den .Unprotect und .Protect Methoden.

    2. Funktioniert dieser Code in allen Excel-Versionen?
    Ja, der Code ist mit Excel-Versionen ab 2007 kompatibel. Achte jedoch darauf, dass die VBA-Umgebung aktiviert ist.

    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