Anzeige
Archiv - Navigation
1076to1080
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Frage zu CommandBars("Cell").ShowPopup

Frage zu CommandBars("Cell").ShowPopup
04.06.2009 09:37:41
Martin
Hallo liebe Excelianer,
ich arbeite sehr viel im dem Kontextmenü und beabsichtige mir eine Art "Schalter" (ein einfacher msoControlButton mit wechselnder FaceID) in das Kontextmenü zu bauen. Das Problem dabei ist, dass sich das Kontextmenü daraufhin neu laden soll. Eigentlich klappt das alles auch sehr gut, allerdings ist der "Schalter" nach dem "Neustart" des Kontextmenüs nicht mehr bedienbar. Gibt es eine Möglichkeit das Kontextmenü neu zu laden, so dass auch dieser Schalter weiter bedienbar bleibt?
Viele Grüße
Martin
Hier der Code (stark vereinfacht):
'Den Schalter dem Kontextmenü henzufügen

Sub Kontextmenue()
With CommandBars("Cell").Controls.Add(Type:=msoControlButton, Before:=1)
.Style = msoButtonIconAndCaption
.Caption = "Mein Schalter"
.OnAction = "Schalter"
.FaceId = 990
End With
End Sub


'Makro Schalter ausführen und Kontextmenü neu laden


Sub Schalter()
'[...] Hier steht das normale Makro
'Kontextmenü an gleicher Position neu laden
CommandBars("Cell").ShowPopup x:=CommandBars("Cell").Left, y:=CommandBars("Cell").Top
End Sub


8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Frage zu CommandBars("Cell").ShowPopup
04.06.2009 10:05:55
Martin
Hallo Hajo,
vielen Dank für Deine Antwort. Ich habe kein Problem mit der wechselnden FaceID, sondern mit dem automatischen Neustart des Kontextmenüs. Bislang habe ich nur eine Notlösung gefunden, bei der ich aber eine Sekunde warten müsste (siehe unten).
'Den Schalter dem Kontextmenü hinzufügen

Sub Kontextmenue()
With CommandBars("Cell").Controls.Add(Type:=msoControlButton, Before:=1)
.Style = msoButtonIconAndCaption
.Caption = "Mein Schalter"
.OnAction = "Schalter"
.FaceId = 990
End With
End Sub


'Makro Schalter ausführen und Kontextmenü neu laden


Sub Schalter()
'[...] Hier steht das normale Makro
'Kontextmenü an gleicher Position neu laden
Application.OnTime Now + TimeValue("00:00:01"), "Neustart"
End Sub



Sub Neustart()
CommandBars("Cell").ShowPopup x:=CommandBars("Cell").Left, y:=CommandBars("Cell").Top - 1
End Sub


Anzeige
AW: Frage zu CommandBars("Cell").ShowPopup
04.06.2009 10:09:55
Hajo_Zi
Hallo Martin,
bei mir kann man das Kontextmenü sofort benutzen und ich hätte das als Dein Problem angesehen. Oder liege ich da falsch?
Gruß Hajo
AW: Frage zu CommandBars("Cell").ShowPopup
04.06.2009 10:28:45
Martin
Hallo Hajo,
die entscheidende Zeile bei mir ist:
CommandBars("Cell").ShowPopup x:=CommandBars("Cell").Left, y:=CommandBars("Cell").Top - 1
Mein Kontextmenü ruft sich selbst wieder auf, während Dein Kontextmenü manuell neu aufgerufen wird. Durch den automatischen "Wiederaufruf" ist bei mir der betreffende msoControlButton nicht mehr anklickbar.
Viele Grüße
Martin
Anzeige
AW: Frage zu CommandBars("Cell").ShowPopup
04.06.2009 10:35:10
Hajo_Zi
Hallo Martin,
warum muss sich das Kontextmenü selber wieder aufrufen. Das könnte man doch gleich in einem Makro machen.
Gruß Hajo
AW: Frage zu CommandBars("Cell").ShowPopup
04.06.2009 10:55:35
Martin
Hallo Hajo,
es soll eine Art Checkbox sein wo beim Aufruf des Kontextmenüs immer ersichtlich ist, ob "aktiviert" oder "deaktiviert". Das ist relevant für andere Makros, die aus dem Kontextmenü heraus gestartet werden. Eine ständige MsgBox-Abfrage wird auf Dauer sehr lästig. Der zweite Rechtsklick nach Umschaltung der Checkbox soll dem Anwender einfach erspart bleiben, um das relevante Makro zu starten.
Viele Grüße
Martin
Anzeige
Lösung - leider nicht schön...
04.06.2009 11:08:24
Martin
Hallo,
ich habe eine Lösung gefunden. Leider muss das ganze Kontextmenü zurückgesetzt und neu "eingelesen" werden. Es ist zwar keine schöne Lösung, führt aber zum gewünschten Ziel:
'Den Schalter dem Kontextmenü hinzufügen

Sub Kontextmenue()
With CommandBars("Cell").Controls.Add(Type:=msoControlButton, Before:=1)
.Style = msoButtonIconAndCaption
.Caption = "Mein Schalter"
.OnAction = "Schalter"
If Cells(1, 1) = "1" Then .FaceId = 990
End With
End Sub


'Makro Schalter ausführen und Kontextmenü neu laden


Sub Schalter()
If Cells(1, 1) = "1" Then Cells(1, 1).ClearContents Else Cells(1, 1) = "1"
CommandBars("Cell").Reset
Kontextmenue
CommandBars("Cell").ShowPopup x:=CommandBars("Cell").Left, y:=CommandBars("Cell").Top - 1
End Sub


Anzeige
AW: Lösung - leider nicht schön...
04.06.2009 14:11:34
Rudi
Hallo,
sehr schlecht.
Das zerschießt alle eigenen Punkte in Cell, nicht nur "Mein Schalter".
Gruß
Rudi
Was besseres weiß ich aber auch nicht.

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige