Symbol dynamisch mit Makro und TastenKürzel belegen |
|
|||||||||||||||||||||
Dieses Makro entstand aufgrund einer Anfrage in der NG, ob man ein ausgeführtes Makro einfach wiederholen kann. Dieses ist z.B. für den letzten Befehl möglich. In einer Funktion wird ein neues Symbol in die Symbolleiste "Standard" eingefügt und mit dem Aufruf eines Makros hinterlegt. Gleichzeitig wird diesem Symbol ein Tastenkürzel zugewiesen. Im Tooltipp wird dann sowohl der Makroname als auch das Tastenkürzel angezeigt. Da letzteres leider nicht automatisch erfolgt, auch wenn die entsprechende Option gesetzt ist, wird beides manuell in den Tooltipptext geschrieben. Der Aufruf erfolgt dann folgendermaßen: 1 Sub Testaufruf() 2 ' Aufruf der Funktion mit Makroname 3 Tastenkürzel ("Testaufruf") 4 MsgBox "Hier steht der Makrocode" 5 End Sub
In der Funktion Tastenkürzel wird in der Symbolleiste "Standard" zuerst nach einer vorhandenen Schaltfläche mit der ID=1 und dem Tag="Testmakro" gesucht. Ist sie vorhanden, wird der OnAction-Eigenschaft der im Aufruf angegebene Makroname zugewiesen (Zeile 13). Ist sie nicht vorhanden, wird sie ans Ende der Symbolleiste eingefügt. Dabei werden die .Tag-Eigenschaft und das angezeigte Symbol (FaceID) gesetzt. 1 Function Tastenkürzel(sMakro) 2 Dim myctrl As CommandBarControl 3 Dim myctrlbar As CommandBar 4 Set myctrlbar = CommandBars("Standard") 5 Set myctrl = myctrlbar.FindControl(Type:=msoControlButton, ID:=1, _ Tag:="Testmakro") 6 If myctrl Is Nothing Then 7 Set myctrl = CommandBars("Standard").Controls.Add _ (Type:=msoControlButton, ID:=1) 8 myctrl.BeginGroup = True 9 myctrl.Tag = "Testmakro" 10 myctrl.FaceId = 99 11 End If 12 ' Aktion der Schaltfläche zuweisen 13 myctrl.OnAction = sMakro 14 myctrl.Caption = sMakro 15 ' Definiert das Tastenkürzel und weist es dem jeweiligen Makro zu 16 KeyBindings.Add KeyCode:=BuildKeyCode(wdKeyControl, _ wdKeyShift, wdKeyU), KeyCategory:=wdKeyCategoryMacro, _ Command:=sMakro 17 ' Hier steht das Tastenkürzel im Tooltipp 18 myctrl.TooltipText = sMakro & " (Ctrl+Shift+U)" 19 End Function Die folgende Funktion löscht das Symbol in der Symbolleiste und setzt die Variablen zurück. Diese Funktion sollte verwendet werden, um das System wieder in einen klaren Zustand zurückzusetzen, wenn das Symbol nicht mehr verwendet wird. 1 Function Tastenkürzellöschen() 2 Dim myctrl As CommandBarControl 3 Dim myctrlbar As CommandBar 4 Set myctrlbar = CommandBars("Standard") 5 Set myctrl = myctrlbar.FindControl(Type:=msoControlButton, ID:=1, _ Tag:="Testmakro") 6 If Not myctrl Is Nothing Then 7 myctrl.Delete 8 Set myctrl = Nothing 9 Set myctrlbar = Nothing 10 End If 11 End Function |
www.chf-online.de/vba/makrosymbol.htm | © 2001-11 Christian Freßdorf (Zaphod-Systems) |