2014-05-09 77 views
0

我在同一工作簿中的許多工作表上都有相同的命令按鈕,稱爲「輸出」。所有按鈕都調用模塊ModMain中相同的「子Output()」。我需要知道命令調用來自哪張表單?哪個命令按鈕叫做sub?

+0

您可以添加一個標識它的參數。 –

+3

如果您單擊工作表上的某個按鈕,它將始終是活動工作表。所以代碼就像'MsgBox ActiveSheet.Name' – tigeravatar

+2

作爲一種替代方法(如果你在同一張表上有多個按鈕,這個選項很有用),你可以看一下'Application.Caller',它返回被點擊的按鈕的名稱:如果您唯一地命名按鈕,則可以確定如何處理呼叫。 –

回答

3

確認這是在每一個VBA模塊的頂部:

Option Explicit 

然後改變這:

Sub Output() 

這樣:

Sub Output(strSource as String) 

您所添加的參數Sub。現在你的代碼將無法編譯。 (如果您不知道這部分,請參閱幫助。)

修復代碼以便編譯。 VBA編輯器將引導您到每個位置。這些位置將是您的「所有相同」按鈕的VBA程序。

其中每個呼叫Output,將其更改爲Output("ThisPlace")。對於這個地方,插入一個唯一的名稱作爲標識符。

現在按鈕的標識方式可以從Sub中抓取。

3

一種方法,你可以使用(如果你有在同一張紙上都調用同一個程序的多個按鈕特別有用)是看的

Application.Caller 

你叫子的價值。這將返回被點擊的按鈕的名稱:如果您唯一命名按鈕,則可以確定如何處理該呼叫。

還值得指出的是,(使用工作表上的表格按鈕),您可以通過「的OnAction」設置傳遞參數,因此,如果您輸入(例如)

'TestSub "Hello", 2' 

進入「宏名」文本框(包括單引號),它將調用TestSub並傳遞「Hello」和2作爲參數。

+0

在http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx上提供了很好的解釋(向下滾動1/3) – Smandoli