带有 count 的 UDF 总是返回 0,或者一个错误
Posted
技术标签:
【中文标题】带有 count 的 UDF 总是返回 0,或者一个错误【英文标题】:UDF with count always returns 0, or an error 【发布时间】:2021-02-24 09:57:34 【问题描述】:所以,我有一个简短的 UDF,它接受一个表(作为范围)作为输入,并将行数作为输出返回。
Function CALCROW(mytable As Range) As Double
Dim rowNumber As Double
statement
CALCROW = rowNumber
End Function
声明,我试过了
rowNumber = myTable.Rows.Count
rowNumber = myTable.Count
rowNumber = Application.WorksheetFunction.Count(myTable)
即使表格有 5 行,两者都给出 0。
我什至尝试过
rowNumber = myTable.Rows
rowNumber = Application.WorksheetFunction.Rows.Count(myTable)
rowNumber = Application.WorksheetFunction.Rows(myTable)
但对他们来说,我得到了#VALUE 错误。
我知道,如果我只想知道 excel 中的行数,我可以使用 =ROWS(myTable),但不是这样...
【问题讨论】:
rowNumber = myTable.Rows.Count
为我工作。
如何将表格传递给函数?另请注意,您的 3 次尝试计算的结果非常不同。
【参考方案1】:
其实如下代码(在一个模块中)
Option Explicit
Public Function CALCROW(mytable As Range) As Long
CALCROW = mytable.Rows.Count
End Function
这是一个公式
=CALCROW(B1:G8)
给出8
这是正确的。除了B1:G8
,您甚至可以提供一个命名范围或 ListObject 名称,这样就可以了。
请注意,行数只能是 Long
类型。
【讨论】:
@PeterN 实际上不,您的代码也可以工作(我的代码没有问题)。类型不是问题,但将其声明为Double
没有任何意义,因为行号不能有任何小数(行 5.3
不存在)它们始终是整数。因此,Long
将是正确的类型(因为 Excel 的行数超过了Integer
的行数)。以上是关于带有 count 的 UDF 总是返回 0,或者一个错误的主要内容,如果未能解决你的问题,请参考以下文章
JSON .count 数组在 Swift 4 中总是返回 0