如何使VBA功能"仅限VBA"并将其禁用为UDF

Ski*_*zoa 7 excel vba excel-2007 user-defined-functions

我正在编写一个VBA函数,我希望在同一文档中的其他VBA模块中公开可用,但是我不希望它作为UDF(用户定义的函数)提供.

如果我使用公共访问修饰符,但我的函数也可以作为UDF公式提供,可以从工作簿中的单元格调用.我不想要这个.

是否有访问修饰符或其他方式可以帮助我获得这种"仅VBA"行为?

亲切的问候

Yow*_*E3K 6

如果Option Private Module在功能所在的模块中使用,则可以将该功能声明为PublicVBA项目中的任何其他模块并在其中使用,但其他应用程序或项目(包括Excel本身)将无法访问该功能。


Dic*_*ika 5

如果在Excel中使用,这将返回#VALUE错误.

Function VBAOnly() As Variant

    If TypeName(Application.Caller) <> "Range" Then
        VBAOnly = 1 'or some other return value
    Else
        VBAOnly = CVErr(xlErrValue)
    End If

End Function
Run Code Online (Sandbox Code Playgroud)

  • `xlErrName`会更好:) (3认同)

Sea*_*anC -1

传递一个参数,仅当给定“magic*”值时才允许该函数运行。

#NAME!示例 -除非您知道密钥是什么,否则这将给出错误:

Function VBAOnly(key As Long)

If key <> 12345 Then
    VBAOnly = CVErr(xlErrName)
    Exit Function
End If

VBAOnly = True

End Function
Run Code Online (Sandbox Code Playgroud)