2016-10-27 76 views
1

我有一個宏解析Excel中的大文件。我創建了一個表單,允許我搜索並提供特定消息的摘要。我可以把從Excel中的按鈕調用VBA表格

FormName.Show 

在宏的末尾,它的工作原理。表單在解析宏完成時顯示。但我並不總是希望表單出現,有時我想在保存電子表格後再次調用它。所以我寫了另一個函數,可以創建一個可以打開表單的按鈕。在.OnAction聲明我的OnAction =「FormName.Show」

Sub Create_Button() 
ActiveSheet.Buttons.Add(437.25, 72, 125.25, 47.25).Select 
Selection.OnAction = "FormName.Show" 
Selection.Characters.Text = "Search Messages" 
End Sub 

這是不行的,它創建的按鈕,但是當我按一下按鈕我得到

「無法運行宏」 xxxx.xlam'!FormName.Show'宏可能在此工作簿中不可用,或者可能已禁用所有宏。

爲什麼它在主宏而不是按鈕OnAction中工作?

感謝

回答

0

MSDNShape.OnAction需要一個宏的名稱,而不是VBA代碼。你已經嘗試傳遞它的VBA代碼。相反,試試這個:

Selection.OnAction = "showForm" 
.... 
End Sub 

Public Sub showForm() 
    FormName.Show 
End Sub 
+0

完美,謝謝,我知道我失去了一些東西。 – Rob

+0

沒問題。如果他們解決了您的問題,請考慮將其中一個答案標記爲答案。 – OpiesDad

0

.OnAction不僅運行宏沒有也不會評估代碼。將其粘貼到標準模塊中。


Sub ShowUserform() 
    FormName.Show 
End Sub 

Sub Create_Button() 
    With ActiveSheet.Buttons.Add(437.25, 72, 125.25, 47.25) 
     .OnAction = "ShowUserform" 
     .Characters.Text = "Search Messages" 
    End With 
End Sub 

enter image description here