Eigenes Menue mit Haken für Ein/Aus
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
Antwort schreiben
Antwort 1 von woher vom 28.09.2022, 19:29 Options
Hallo,
"Kontrollkästchen" heißt das Ding was ich suche und einbinden will.
Wolfgang
Antwort 3 von coros vom 28.09.2022, 20:06 Options
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
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 4 von woher vom 28.09.2022, 21:23 Options
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
Antwort 5 von woher vom 29.09.2022, 18:30 Options
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
Antwort 6 von coros vom 29.09.2022, 18:56 Options
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üleiste
aufrufen, damit der Menüpunkt immer wechselmäßig sich ändert.
MfG,
Oliver
Da hier der einzige Lohn für die Helfer eine Rückmeldung ist, wäre es nett, wenn Du ein Feedback abgeben könntest, ob der Lösungsvorschlag Dein Problem gelöst hat.
Antwort 7 von woher vom 30.09.2022, 10:46 Options
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