我正在編寫一個VBA函數,我希望在同一文檔中的其他VBA模塊中公開提供,但是我不希望它可用作爲UDF(用戶定義的功能)。如何使VBA函數「VBA only」並將其禁用爲UDF
如果我使用公共訪問修飾符,但是我的函數也可以作爲可以從工作簿中的單元格調用的UDF公式。我不想要這個。
是否有訪問修飾符或其他方式可以幫助我獲得此「VBA only」行爲?
親切的問候
我正在編寫一個VBA函數,我希望在同一文檔中的其他VBA模塊中公開提供,但是我不希望它可用作爲UDF(用戶定義的功能)。如何使VBA函數「VBA only」並將其禁用爲UDF
如果我使用公共訪問修飾符,但是我的函數也可以作爲可以從工作簿中的單元格調用的UDF公式。我不想要這個。
是否有訪問修飾符或其他方式可以幫助我獲得此「VBA only」行爲?
親切的問候
傳遞參數,只允許如果「魔術*值是給它的函數運行
示例 - 除非你知道這會給錯誤#NAME!
什麼關鍵是:
Function VBAOnly(key As Long)
If key <> 12345 Then
VBAOnly = CVErr(xlErrName)
Exit Function
End If
VBAOnly = True
End Function
使用Private
修飾符應只允許在函數存在的模塊中執行。
並非如此。 Cursory測試顯示可以從Excel訪問「Private」功能。 –
如果您在其中出現的函數,該函數可以聲明爲Public
和任何使用的模塊中使用Option Private Module
您的VBA項目中的其他模塊,但其他應用程序或項目(包括Excel本身)無法訪問它們。
您可以詳細瞭解此功能的用途嗎?這可能有助於建議使用僅VBA的VBA類的方法,並且不能從工作表中初始化。至少將預期的輸入參數顯示爲輸出值。 – ja72
檢查函數中application.caller的類型名稱。沒有測試過這個,但我認爲它應該允許檢查一個函數是否正在從一個單元中調用。 –