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

Forumthread: nicht gesperrte Zellen auswählen

nicht gesperrte Zellen auswählen
28.07.2016 11:31:40
Jörg
Hallo,
ich möchte per Makro alle nicht gesperrten Zellen in dem aktuellen Blatt auswählen und den Inhalt löschen.
Gibt es hier für eine Lösung ?
Danke.
Anzeige

13
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: nicht gesperrte Zellen auswählen
28.07.2016 11:45:44
fcs
Hallo Jörg,
Sub Loeschen_nicht_gesperrt()
Dim wks as Worksheet, Zelle as Range
Set wks = Activesheet
For Each Zelle in wks.Usedrange.Cells
If Zelle.Locked = False Then
Zelle.ClearContents
End if
Next
Gruß
Franz
AW: nicht gesperrte Zellen auswählen
28.07.2016 11:48:27
UweD
Hallo
so?
Sub Makro2()
    Dim Z
    For Each Z In Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeConstants, 3)
        If Z.Locked Then Z.ClearContents
    Next
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0


xlCellTypeConstants Wahlt nur Konstante Zellen. Keine mit Formel
Gruß UweD
Anzeige
AW: uppps
28.07.2016 11:50:23
UweD
war ja genau andersrum gewünscht.
dann so:
Sub Makro2()
    Dim Z
    For Each Z In Sheets("Tabelle1").Cells.SpecialCells(xlCellTypeConstants, 3)
        If Z.Locked = False Then Z.ClearContents
    Next
End Sub

VBA/HTML-CodeConverter, AddIn für Office 2002-2016 - in VBA geschrieben von Lukas Mosimann. Projektbetreuung:RMH Software & Media

Code erstellt und getestet in Office 15 - mit VBAHTML 12.6.0

LG UweD
Anzeige
AW: uppps
28.07.2016 12:03:14
Jörg
Hallo,
bekomme eine Fehlermeldung "Kann Teil einer verbundenen Zelle nicht ändern"
Sub Makro9()
Dim Z
ActiveSheet.Unprotect "jg"
For Each Z In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants, 3)
If Z.Locked = False Then Z.ClearContents
Next
ActiveSheet.Protect "jg"
End Sub

Anzeige
AW: uppps
28.07.2016 12:18:31
Daniel
Hi
dann probier mal Z.MergeArea.ClearContents
wenn verbundene Zellen vorhanden sind, sollte man darauf achten, dass man immer den ganzen Zellverbund bearbeitet und nicht nur einen Teil des Verbundes.
die Eigenschaft MergeArea hilft dabei, in dem es den Zellbereich auf den ganzen Zellverbund erweitert.
Gruß Daniel
Anzeige
AW: uppps
28.07.2016 12:29:41
Jörg
Super Danke !!
Kann man das Makro auch so bearbeiten, dass alle nicht gesperrten Zellen ausgewählt werden.
So kann ich kontrollieren ob ich die richtigen Zellen freigegeben habe.
AW: uppps
28.07.2016 12:33:12
Daniel
Hi
nein, kann man nicht.
du musst alle Zellen auswählen, mit einer Schleife drüber gehen und die .Locked-Eigenschaft der Zelle abfragen.
Gruß Daniel
Anzeige
AW: uppps
28.07.2016 12:37:10
Jörg
Hallo Daniel,
jetzt verstehe ich nur Bahnhof ?
Gruß Jörg
AW: uppps
28.07.2016 12:39:28
Daniel
Als Code so wie Franz es dir schon in seinem Ersten Beitrag gezeigt hat.
Gruß Daniel
AW: uppps
28.07.2016 12:48:19
Jörg
Und wie muss ich den Code ändern ?
Der war doch auch zum löschen.
Sorry !
Anzeige
AW: uppps
28.07.2016 12:57:42
Daniel
zum selektieren aller nicht gesperrten Zellen.
dim Bereich as range
dim Zelle as range
for each Zelle in ActiveSheet.UsedRange
if Zelle.Locked = False Then
If Bereich is Nothing then
Set Bereich = Zelle
Else
Set Bereich = Union(Bereich, Zelle)
end if
end if
Next
if not Berich is Nothing then Bereich.Select
Gruß Daniel
Anzeige
AW: uppps
28.07.2016 14:04:49
Jörg
Perfekt !!
Vielen Dank.
Zellen auswählen
28.07.2016 12:59:53
Rudi
Hallo,
Sub aaa()
Dim c As Range, cs As Range
For Each c In Cells.SpecialCells(xlCellTypeConstants)
If Not c.Locked Then
If cs Is Nothing Then
Set cs = c.MergeArea
Else
Set cs = Union(cs, c.MergeArea)
End If
End If
Next
If Not cs Is Nothing Then cs.Select
End Sub
Gruß
Rudi
Anzeige
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige

Infobox / Tutorial

Nicht gesperrte Zellen in Excel auswählen und bearbeiten


Schritt-für-Schritt-Anleitung

Um alle nicht gesperrten Zellen in Excel auszuwählen und deren Inhalt zu löschen, kannst du ein einfaches VBA-Makro verwenden. Befolge diese Schritte:

  1. Öffne Excel 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 Loeschen_nicht_gesperrt()
       Dim wks As Worksheet, Zelle As Range
       Set wks = ActiveSheet
       For Each Zelle In wks.UsedRange.Cells
           If Zelle.Locked = False Then
               Zelle.ClearContents
           End If
       Next
    End Sub
  4. Schließe den VBA-Editor und kehre zu Excel zurück.

  5. Führe das Makro aus, um alle nicht gesperrten Zellen zu löschen.


Häufige Fehler und Lösungen

Ein häufiges Problem, das auftreten kann, ist die Fehlermeldung "Kann Teil einer verbundenen Zelle nicht ändern". Dies passiert, wenn du versuchst, den Inhalt einer verbundenen Zelle zu löschen. Um dieses Problem zu beheben, kannst du den Code wie folgt anpassen:

Sub MakroMitMergeArea()
    Dim Zelle As Range
    For Each Zelle In ActiveSheet.Cells.SpecialCells(xlCellTypeConstants)
        If Not Zelle.Locked Then
            Zelle.MergeArea.ClearContents
        End If
    Next
End Sub

Stelle sicher, dass du zuerst das Arbeitsblatt mit ActiveSheet.Unprotect "deinPasswort" entsperrst und danach wieder mit ActiveSheet.Protect "deinPasswort" schützt.


Alternative Methoden

Falls du kein VBA verwenden möchtest, kannst du auch die Filterfunktion in Excel nutzen:

  1. Wähle die gesamte Tabelle aus.
  2. Gehe zu Daten > Filter.
  3. Klicke auf den Dropdown-Pfeil in der Kopfzeile und wähle die Zellen aus, die nicht gesperrt sind.
  4. Lösche die Inhalte der gefilterten Zellen manuell.

Praktische Beispiele

Hier sind einige Beispiele, wie du den Code für unterschiedliche Szenarien anpassen kannst:

  1. Nur nicht gesperrte Zellen auswählen:

    Sub Auswaehlen_nicht_gesperrt()
       Dim Bereich As Range
       Dim Zelle As Range
       For Each Zelle In ActiveSheet.UsedRange
           If Zelle.Locked = False Then
               If Bereich Is Nothing Then
                   Set Bereich = Zelle
               Else
                   Set Bereich = Union(Bereich, Zelle)
               End If
           End If
       Next
       If Not Bereich Is Nothing Then Bereich.Select
    End Sub
  2. Inhalte der nicht gesperrten Zellen in einer bestimmten Tabelle löschen:

    Sub Loeschen_Tabelle1()
       Dim wks As Worksheet
       Set wks = Sheets("Tabelle1")
       For Each Zelle In wks.UsedRange
           If Zelle.Locked = False Then
               Zelle.ClearContents
           End If
       Next
    End Sub

Tipps für Profis

  • Verwendung von MergeArea: Wenn du mit verbundenen Zellen arbeitest, achte darauf, die MergeArea-Eigenschaft zu nutzen, um den gesamten Zellverbund zu bearbeiten.
  • Fehlerbehandlung: Implementiere Fehlerbehandlung in deinem VBA-Code, um Probleme während der Ausführung zu vermeiden.
  • Makros speichern: Speichere deine Excel-Datei im Makro-fähigen Format (*.xlsm), um die Makros zu behalten.

FAQ: Häufige Fragen

1. Wie kann ich die gesperrten Zellen wieder sperren?
Du kannst die Zellen einfach mit ActiveSheet.Protect "deinPasswort" wieder sperren.

2. Was mache ich, wenn mein Makro nicht funktioniert?
Überprüfe, ob alle Zellen korrekt referenziert sind und ob das Arbeitsblatt entsperrt ist, bevor du das Makro ausführst.

3. Kann ich das Makro auch für andere Tabellen verwenden?
Ja, passe einfach den Namen des Arbeitsblatts im Code an, um das Makro für andere Tabellen zu verwenden.

4. Funktioniert das auch in Excel Online?
Die Verwendung von VBA-Makros ist in Excel Online nicht möglich. Du musst Excel auf deinem Computer verwenden.

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