2017-05-06 33 views
2

我有一個帶有模板的個人工作站(使用vba代碼和按鈕操作),我需要時將其複製到工作表中。它創建了一張表格來快速訪問許多> 25張紙,如假彈出窗口(excel 2016 macos)。當我將它直接編程到工作表模塊時,它確實工作良好。它收集表單並使用以下代碼創建按鈕。Excel:按鈕操作代碼 - 爲什麼我不能使用工作簿和工作表模塊

Set btnRng = TOC_WS.Range(Cells(lastRow, btnCol), Cells(lastRow, btnCol)) 
      Set btn = TOC_WS.Buttons.Add(btnRng.Left, btnRng.Top, btnRng.Width, btnRng.Height) 
      With btn 
       .OnAction = "btnAction" 
       .Caption = WS.Name 
       .Name = WS.Name 
      End With 

而且按鈕子....

Sub btnAction() 
    ...... 
End Sub 

但現在由於某種原因,當被叫子是該板模塊中這是行不通的。我收到無法找到的通知。如果我把它放到代碼模塊中,它就可以工作。我當然搜索te網頁,但找不到任何說不能工作的東西。

我的問題 - 如何讓按鈕操作返回到與代碼的其餘部分相同的工作表模塊?

回答

1

通常,當例程是Worksheet的成員時,工作表的名稱隱含地是例程名稱的一部分。

btn.OnAction = "Sheet1.btnAction" 

或者,在你的代碼,你想將它綁定到TOC_WS片例行:

btn.OnAction = TOC_WS.CodeName & ".btnAction" 

而且,如果你想在日常移動到代碼模塊ThisWorkbook

btn.OnAction = "ThisWorkbook.btnAction" 
+0

感謝您的評論,但我仍然得到了相同的結果。錯誤給出了按鈕操作的完整路徑。 「De macro PP50Begroting.xlsm!TOC.btnAction kan niet worden gevonden。」 –

+0

你會嘗試編輯:'TOC_WS.CodeName'而不是'TOC_WS.Name'。 –

+0

有趣的是,我之前嘗試過,並沒有工作,但現在確實如此。非常感謝你。 –

相關問題