für mich gilt leider: "still: VBA very poor"
In Tabelle1 sollen beim Öffnen der Datei alle Checkboxen zurückgesetzt und alle nicht gesperrten Zellen geleert werden. In einer Testdatei funktionierte das mit dem unten dargestellten Makro (mit Hilfe dieses Forums erstellt). Als ich die Sache in der gewünschten Anwendung unterbrachte, gab es ein Problem: Die Tabelle erfasst den Bereich A1 bis W53. Sie enthält auch viele verbundene Zellen (z.B. besteht A53 aus den verbundenen Zellen A53 bis W53). Da macht das Makro nicht mit. Es kommt die Meldung: "Laufzeitfehler 1004. Kann Teil einer verbundenen Zelle nicht ändern".
Kann mir jemand erklären, wie ich die verbundenen Zellen mit erwische ?
By the way noch ein grundsätzliches Verständnisproblem (s.o. "... very poor", sorry):
1. Wenn ich ein Makro erstelle und ich mir einen mehr oder weniger sinnvollen Namen dafür ausdenke, dann ist alles hinfällig sobald ich "workbook_open" oder Vergleichbares verwende. Ist das o.k. ? Wozu gebe ich dann einen Namen ein ?
2. Kann man ein Makro auch nur einem von zahlreichen Blättern zuordnen bzw. ist das sinnvoll ?
Lg Bernhard
Sub workbook_open()
Dim Box As OLEObject
Dim Zelle As Range
If Worksheets("Tabelle1").Cells(3, 45) = 1 Then
For Each Box In Worksheets("Tabelle1").OLEObjects
If TypeName(Box.Object) = "CheckBox" Then
Box.Object.Value = False
End If
Next
For Each Zelle In Worksheets("Tabelle1").Range("A1:W53")
If Zelle.Locked = False Then Zelle.ClearContents
Next Zelle
End If
End Sub