簡體   English   中英

使用controlpopup vba運行宏

[英]Run macro using controlpopup vba

我正在嘗試編寫一個宏,該宏將創建一個彈出窗口,使我可以在工作簿的頁面之間導航。 到目前為止,我已經能夠填充運行一個簡單宏的controlpopup,但是我希望它能夠接受變量(又稱工作表名稱),而不必編寫許多不同的宏。 這是我到目前為止所擁有的。

Sub Custom_PopUpMenu_1(Mname As String)
    Dim MenuItem As CommandBarPopup
    ' Add the popup menu.
    With Application.CommandBars.Add(Name:=Mname, Position:=msoBarPopup, _
         MenuBar:=False, Temporary:=True)

        With .Controls.Add(Type:=msoControlPopup)
            .Caption = "Menu Control"
              With .Controls.Add(Type:=msoControlButton)
                .Caption = "Button 1 in menu"
                .FaceId = 71
                .OnAction = "'" & ThisWorkbook.Name & "'!" & "TestMacro"
            End With
        End With 
    End With
End Sub

這將運行宏“ TestMacro”,但不確定如何編寫宏,以便它可以接受字符串變量。 我的另一個想法是,在每個.OnAction中,更新工作表名稱的全局變量,但不確定如何執行此操作。 讓我知道您是否可以幫忙。 謝謝!

您的testmacro應該啟動一個用戶testmacro ,該testmacro具有一個ComboBox和一個CommandButton

邏輯是,當用戶窗體初始化時,它將把當前工作簿中的所有工作表名稱存儲在ComboBox ,您可以使用CommandButton導航到該工作表。

這是一個例子

Private Sub UserForm_Initialize()
    Dim ws As Worksheet

    For Each ws In ActiveWorkbook.Worksheets
        ComboBox1.AddItem ws.Name
    Next ws
End Sub

Private Sub CommandButton1_Click()
    Dim wsName As String

    If ComboBox1.ListIndex <> -1 Then
        wsName = ComboBox1.List(ComboBox1.ListIndex)

        If ActiveWorkbook.Sheets(wsName).Visible <> xlSheetVisible Then
            ActiveWorkbook.Sheets(wsName).Visible = True
        End If

        ActiveWorkbook.Sheets(wsName).Activate
    End If
End Sub

截圖

在此處輸入圖片說明

這應該有效(至少,它適用於工作表上的形狀)

.OnAction = "'" & ThisWorkbook.Name & "'!'TestMacro ""blah22""'"

...但是如果您要導航到特定的工作表,則右鍵單擊工作表標簽左側的“ VCR”控件是最簡單的內置方法...

如果您的參數在變量中,則可以執行以下操作:

.OnAction = "'" & ThisWorkbook.Name & "'!'TestMacro """ & stringvariable  & """'"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM