1.7k Aufrufe
Gefragt in Tabellenkalkulation von Mitglied (926 Punkte)
Hallo,
in einem AddIn, im eigenen Menue ich habe bisher das folgende:

With .Controls.Add
.Caption = "Blattschutz aus"
.OnAction = "Blattschutz_aus"
End With

With .Controls.Add
.FaceId = 794
.Caption = "Blattschutz ein"
.OnAction = "Blattschutz_ein"
End With

Kann man daraus auch einen einzigen Eintrag machen:
_ Blattschutz ein/aus
mit einem Quadrat vor dem Text, um da so ein Häkchen zu setzen wie z.B. im Menue Ansicht, wo damit Symbolleisten ein/ausgeblendet werden?
mfg
Wolfgang

7 Antworten

0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo,

"Kontrollkästchen" heißt das Ding was ich suche und einbinden will.

Wolfgang
0 Punkte
Beantwortet von hajo_zi Experte (9.1k Punkte)
Hallo Wolfgang,

ich habe so was mal realisiert im Kontextmenü, vielleicht ist das ein Ansatz?
Kontextmenü mit Haken Link zur Datei

Gruß Hajo
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Wolfgang,

realisiere dass doch über eine Schaltfläche in der Menüleiste, die entsprechend den Zustand des Blattschutzes den Text und ggf. das Icon wechselt. nachfolgend mal ein Beispiel:

Kopiere das Makro in ein StandardModul und starte es z.B. über eine Befehlsschaltfläche
Teste das Makro aber bitte in einer Testdatei und nicht gleich in Deiner Originaldatei.

If ActiveSheet.ProtectContents = True Then
With .Controls.Add
.Caption = "Blattschutz aus"
.OnAction = "Blattschutz_aus"
End With
ElseIf .ProtectContents = False Then
With NeueSymbolleiste.Controls.Add
.FaceId = 794
.Caption = "Blattschutz ein"
.OnAction = "Blattschutz_ein"
End With
End If
Hier wird geprüft, ob das Blatt geschützt ist oder nicht und der Schaltflächentext und die OnAction-Anweisung entsprechend geändert, quasi ein Wechselschalter.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Hajo,
ich habe hier zwar schon diverse Fragen zu Makros gestellt, konnte Makros gelegentlich auf meine Bedürfnisse anpassen, verwende diverse Makros, aber wenn ich dann sowas wie dein oben verlinktes Makro betrachte, dann denke ich, ich habe mich im Wald verirrt .

Hallo Oliver,
zwischen durch, beim schreiben, habe ich mal kurz nachgesehen ob es neue Antworten gibt. Dein Vorschlag sieht gut aus.
Aber jetzt will ich endlich Fußball gucken.

Bis Morgen
mfg
Wolfgang
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Oliver,
ich bin dabei ein AddIn mit diversen Makros zu erstellen, da soll auch "Blattschutz ein/aus" mit rein.
Deinen Vorschlag habe ich wie folgt angepasst (tatsächlich sind es schon mehr Menuepunkte):

Option Explicit
Sub MenueBI()
On Error Resume Next
Application.CommandBars.ActiveMenuBar _
.Controls("BIMakros").Delete
With Application.CommandBars.ActiveMenuBar.Controls.Add(Type:=msoControlPopup)
.BeginGroup = False 'Trennlinie
On Error GoTo 0
.Caption = "&BIMakros"

If ActiveSheet.ProtectContents = True Then
With .Controls.Add
.FaceId = 505
.Caption = "Blattschutz aus"
.OnAction = "Blattschutz_aus"
End With
Else: With .Controls.Add
.FaceId = 505
.Caption = "Blattschutz ein"
.OnAction = "Blattschutz_ein"
End With
End If
End With
End Sub

Hier funktioniert das zwar nicht als "quasi ein Wechselschalter".
In den Makros "...Schutz ein / aus" rufe ich einfach dieses Makro am Ende auf und das Menue wird gelöscht und erneut (verändert) erstellt.
Vielen Dank
Jetzt sehe ich mir auch noch deine Antwort auf meine zweite Frage an.
mfg
Wolfgang
0 Punkte
Beantwortet von coros Experte (4k Punkte)
Hallo Wolfgang,

Du musst in den Makros "Blattschutz_Ein" und "Blattschutz_Aus" am Ende jedesmal das Makro zum Erzeugen der Menüleiste erneut über

Call Makroname_zum_Erzeugen_der_Menüleisteaufrufen, damit der Menüpunkt immer wechselmäßig sich ändert.

MfG,
Oliver
[sub]Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du[/sub]
[sup] ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.[/sup]
0 Punkte
Beantwortet von Mitglied (926 Punkte)
Hallo Oliver,
ich hatte das bereits genau so gemacht. Das wollte ich oben schon mitgeteilt haben:
"In den Makros "...Schutz ein / aus" rufe ich einfach dieses Makro am Ende auf und das Menue wird gelöscht und erneut (verändert) erstellt."
Meine ursprüngliche Vermutung war, das sich so ein "Wechselschalter" innerhalb des Makros für die Menueleiste direkt erstellen lässt, deshalb hat es etwas gedauert bis ich auf obige Lösung gekommen war.
mfg
Wolfgang
...