gpt4 book ai didi

excel - 从工作表调用的 Excel VBA UDF 是否可以传递除 'Range' 以外的任何 Excel VBA 对象模型类的实例?

转载 作者:行者123 更新时间:2023-12-02 04:16:26 24 4
gpt4 key购买 nike

我 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com