excel - 从工作表调用的 Excel VBA UDF 是否可以传递除 'Range' 以外的任

我 99% 肯定答案是否定的,但我想知道是否有人 100% 肯定可以这么说。

考虑一个 VBA UDF:

Public Function f(x)

End Function

当您从工作表中调用它时,“x”将是数字、字符串、 bool 值、错误、数组或“范围”类型的对象。例如,它可以是“Chart”、“ListObject”或任何其他 Excel-VBA 对象模型类的实例吗?

(这个问题源于我转向 Excel 2007 并使用表格,并想知道我是否可以编写接受它们作为参数而不是 Range 的 UDF。对此的答案似乎是否定的,但后来我意识到我没有一般肯定知道。)

最佳答案

您的怀疑是正确的-您只能传递有限的对象类型。例如,如果我在事件工作表上有表并且想知道它的列数,我可以创建一个名为 TableColumnCount 的 UDF并将表名传递给如下函数:

Function TableColumnCount(tn As String) As Integer
    Dim myTableName As ListObject
    Dim ActiveS As Worksheet
    Set ActiveS = ActiveWorkbook.ActiveSheet
    Set myTableName = ActiveS.ListObjects(tn)
    TableColumnCount = myTableName.Range.Columns.Count
End Function

然后在工作表上以 myable 的名称作为字符串调用它,例如 =TableColumnCount("Table1") .

或作为范围对象,如:
Function TableColumnCount(tn As Range) As Integer
    TableColumnCount = tn.Columns.Count
End Function

然后像这样称呼它:=TableColumnCount(Table1)

关于excel - 从工作表调用的 Excel VBA UDF 是否可以传递除 'Range' 以外的任何 Excel VBA 对象模型类的实例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2596296/

相关文章:

.htaccess - .htaccess-RewriteRules工作正常,但浏览器地址栏显示完整

.net - 遍历不同应用程序的所有控件?

sharepoint - WebEx WebOffice的开源替代品?

zend-framework - 无法根据差异生成迁移类(Zend Framework 1.10 +

scala - Scala类型系统:基本类型不匹配

asp.net - 连接到 https ://webservice in asp. 网络应用程序

macos - 您可以使用 PackageMaker 命令从文件列表中创建安装程序吗?

continuous-integration - 与 ClearCase 和长期更新的快照 View

version-control - 在Eclipse CDT中具有多个二进制文件的项目

jboss - 将Drools与JBossESB集成