Hi,
ich füge dynamisch zu einer Menüleiste Buttons hinzu und weise ihnen Subs zu, die beim onAction event ausgeführt werden sollen:
Dim SheetMenu As Object
Dim SheetMenuButton As Object
Set SheetMenu = CommandBars("MeineLeiste").Controls.Add(Type:=msoControlPopup, Temporary:=True)
Set SheetMenuButton = SheetMenu.Controls.Add(Type:=msoControlButton, ID:=1)
With SheetMenuButton
.Caption = result.Fields("Bezeichnung")
.OnAction = "Ausfuehren(" & 123 & ")"
End With
Das klappt soweit auch alles. Aber der Sub, der aufgerufen wird ("Ausführen") scheint mit einer niedrigeren Sicherheitsstuef ausgeführt zu werden, sprich viele Funktionen wie Cells.Clear, das Löschen von Arbeitsblättern etc. werden schlicht nicht ausgeführt.
Wie kann ich das lösen, sodass der Sub mit voller Berechtigung ausgeführt wird?
Habe im Internet eine Art möglichen Lösungsansatz auf http://www.eggheadcafe.com/software/aspnet/35817029/excel2000--sicherheitsstufe-bei-aufruf-eines-makros-mittels-onaction.aspx gefunden, da wird eine eigene Klasse für den Button angelegt, siehe die Antwort von Reiner Wolff vom Friday, March 05, 2010 3:30 PM dort:
Option Explicit
Public WithEvents MyButton As Office.CommandBarButton
Public OnAction As String
Private Sub MyButton_Click(ByVal Ctrl As Office.CommandBarButton,
CancelDefault As Boolean)
Dim str() As String
str = Split(OnAction, " ")
Select Case UBound(str)
Case 0
Run str(0)
Case 1
Run str(0), str(1)
End Select
End Sub
'###### Eigenschaften des Buttons einfach nur durchleiten
Public Property Let Caption(Wert As String)
MyButton.Caption = Wert
End Property
Public Property Get Caption() As String
Caption = MyButton.Caption
End Property
Public Property Let Tag(Wert As String)
MyButton.Tag = Wert
End Property
Public Property Get Tag() As String
Tag = MyButton.Tag
End Property
Public Property Let FaceID(Wert As String)
MyButton.FaceID = Wert
End Property
Public Property Get FaceIde() As String
FaceID = MyButton.FaceID
End Property
Public Property Let DescriptionText(Wert As String)
MyButton.Caption = Wert
End Property
Public Property Get DescriptionText() As String
DescriptionText = MyButton.DescriptionText
End Property
Public Property Let TooltipText(Wert As String)
MyButton.Caption = Wert
End Property
Public Property Get TooltipText() As String
TooltipText = MyButton.TooltipText
End Property
Ich weiß aber nicht wie ich das testen kann; wie könnte ich denn diesen "eigenen Button" mittels SheetMenu.Controls.Add an meine Menüleiste anhängen?
Danke schonmal!
|