AW: Drop down menü - Auswahl sperren
02.05.2011 10:36:15
fcs
Hallo Hansueli,
wenn du die Comboboxen mit einer Zelle verknüpft hast, dann könntest du vor dem Versand der Datei die verknüpfte Zelle schützen. Dann kommt beim Versuch den Wert der Kombobox zu ändern die übliche Meldung zu geschützten Zellen. Eine weiter Option wäre die Elemente unsichtbar zu setzen, macht aber nur Sinn, wenn der gewählte Wert der Comboboxen nicht als Information benötigt wird.
Der Name der Formular-Steuerelemente wird nach Rechte-Maus-Klick auf das Element im Zelladress-Feld angezeigt. Dabei darf das Tabellenblatt aber nicht geschützt sein. Zusätzlich zu den "Deutschen" Namen verwaltet Excel "heimlich" auch noch die automatisch vergebenen Namen in Englisch. Man bemerkt dies, wenn man die Shape-Namen per Makro listet. Erst bei geänderten Objektnamen werden die deutschen Namen angezeigt.
Einige Eigenschaften (aber z.B. nicht die Position) kann man über "Steuerelement formatieren" bearbeiten/anzeigen.
Gruß
Franz
Hier ein paar Beispielmakros:
Sub FormOjekt_Sperren()
'Formular-Combobox - verknüpfte Zelle sperren
Dim wks As Worksheet, oShape As Shape
Set wks = Worksheets("Tabelle2")
With wks
.Unprotect 'ggf. Passwort ergänzen
Set oShape = .Shapes("Dropdown 1")
.Range(oShape.ControlFormat.LinkedCell).Locked = True
.Protect 'ggf. Passwort ergänzen
End With
End Sub
Sub FormOjekt_Entsperren()
'Formular-Combobox - verknüpfte Zelle entsperren
Dim wks As Worksheet, oShape As Shape
Set wks = Worksheets("Tabelle2")
With wks
.Unprotect 'ggf. Passwort ergänzen
Set oShape = .Shapes("Drop Down 1")
.Range(oShape.ControlFormat.LinkedCell).Locked = False
.Protect 'ggf. Passwort ergänzen
End With
End Sub
Sub Shapes_NamenListen()
'Zeigt in MsgBox nacheinander Name, Position und Anmessungen von Shape-Objekten im aktiven _
Blatt an
Dim objShape As Shape, lRow As Long, lColumn As Long
lRow = ActiveWindow.ScrollRow
lColumn = ActiveWindow.ScrollColumn
For Each objShape In ActiveSheet.Shapes
With objShape
'Scroll in die linke obere Ecke der TopLeftCell
ActiveWindow.ScrollColumn = .TopLeftCell.Column
ActiveWindow.ScrollRow = .TopLeftCell.Row
If MsgBox("Name Shape : " & .Name & vbLf _
& "TopLeftCell : " & .TopLeftCell.Address & vbLf _
& "Links(Left) : " & .Left & vbLf _
& "Top(Oben) : " & .Top & vbLf _
& "Breite(Width) : " & .Width & vbLf _
& "Höhe(Height) : " & .Height, _
vbRetryCancel + vbInformation, "Liste der Shape-Namen") _
= vbCancel Then GoTo Ende
End With
Next
ActiveWindow.ScrollColumn = lRow
ActiveWindow.ScrollRow = lColumn
Ende:
Set objShape = Nothing
End Sub