2009-04-16 84 views
11

創建一個自定義的工作表函數我有能夠使用VBA函數在Excel中計算出的值,像這樣(爲單元格公式)淡淡的記憶:在Excel VBA

=MyCustomFunction(A3) 

可以這樣做?

編輯:

這是我的VBA函數簽名:

Public Function MyCustomFunction(str As String) As String 

功能坐在ThisWorkbook模塊中。如果我嘗試在工作表中使用它,如上所示,我得到#NAME?錯誤。


溶液(謝謝,codeape):當它被定義ThisWorkbook模塊的功能是不可訪問的。它必須位於「正確」模塊中,該模塊已手動添加到工作簿中。

+0

值得注意的是,如果使用.xlsx擴展名保存工作簿,新版本的Excel將禁用VBA。您需要使用.xlsm擴展名將其保存爲啓用VBA。 – 2015-07-04 11:45:07

+0

您可能還需要保存工作表文件,如果您尚未。然後關閉並再次打開它可能會做到這一點。再一次,如果你改變了它,你可能需要重新應用你的公式。 – prot 2016-12-05 13:30:37

回答

18

是的,它可以。您只需在模塊中定義一個VBA函數。請參閱http://www.vertex42.com/ExcelArticles/user-defined-functions.html以獲得有關示例的很好介紹。

這裏有一個簡單的例子:

  • 創建一個新的工作簿
  • 切換到VBA視圖(ALT-F11)
  • 插入模塊:插入|模塊
  • 模塊內容:
 
Option Explicit 

Function MyCustomFunction(input) 
    MyCustomFunction = 42 + input 
End Function 
  • 切換回工作表(ALT-F11),並輸入一些值:需要更換爲
 
A1: 2 
A2: =MyCustomFunction(A1) 
4

字輸入它是一個基本的關鍵字。嘗試數字。你也可以通過指定一個類型來進一步,例如變體。

Function MyCustomFunction(num As Variant) 
    MyCustomFunction = 42 + num 
End Function