183 Aufrufe
Gefragt in Tabellenkalkulation von robbi58 Mitglied (978 Punkte)
Einen angenehmen Fußballabend ans Forum! (da werden sich nicht alle angesprochen fühlen)

Zum Löschen von nicht gesperrten Zellen verwende ich folgendes Makro:

Sub unlocked()
Dim i%, zell
For i = 1 To Sheets.Count
    With Sheets(i)
        For Each zell In Range("A1:K40")
            If zell.Locked = False Then zell.ClearContents
        Next zell
    End With
Next i
End Sub

Ich möchte aber alle nicht gesperrten Zellen einer Arbeitsmappe löschen (bei mir sind es ca. 50 Blätter) und gleichzeitig das Arbeitsblatt "Informationen" öffnen (die SchülerInnen können die Übung wiederholen; das setzt voraus, dass all ihre Eingaben gelöscht werden und sie wieder zum Ausgangsblatt kommen).

Vielleicht hat jemand einen Lösungsansatz für meine Frage!
Danke im Voraus und noch einen angenehmen Abend (auch ohne Fußball).

LG Robert

4 Antworten

0 Punkte
Beantwortet von beverly_ Experte (3.3k Punkte)

Hi Robert,

innerhalb einer With-Anweisung wird der Bezug zum übergeordneten Objekt durch einen vorangesetzten Punkt realisiert - es müsste bei dir also For Each zell In .Range("A1:K40") heißen.

Bis später, Karin

0 Punkte
Beantwortet von robbi58 Mitglied (978 Punkte)

Hallo Karin!

Zunächst recht herzlichen Dank für deine Hilfe.

Du hast es auf den Punkt (.) gebracht. Kleine Ursache, große Wirkung.
Ein Problem habe ich noch: bei einer von 24 Aufgaben habe ich verbundene Zellen (ich weiß, man sollte diese vermeiden; aber in diesem Falle komme ich aus ästethischen Gründen nicht umhin), weshalb ich einen debugger habe. Was muss ich an der Formel ändern, um das zu lösen?

LG Robert

+1 Punkt
Beantwortet von beverly_ Experte (3.3k Punkte)
ausgewählt von halfstone
 
Beste Antwort

Hi Robert,

dies ist keine Formel sondern VBACode...wink

In dem Fall musst du mit einer zusätzlichen IF-Anweisung unterscheiden, ob es sich um verbundene Zellen handelt oder nicht:

        For Each zell In .Range("A1:K40")
            If zell.Locked = False Then
                ' verbundene Zellen
                If zell.MergeCells Then
                    zell.MergeArea.ClearContents
                ' nicht verbundene Zelle
                Else
                    zell.ClearContents
                End If
            End If
        Next zell


Bis später, Karin

0 Punkte
Beantwortet von robbi58 Mitglied (978 Punkte)
Bearbeitet von robbi58
Liebe Karin!
Danke für dein Bemühen und deine Hilfe. Der "Code" funktioniert  zu meiner vollsten Zufriedenheit.

LG Robert
...