【发布时间】:2018-01-05 14:34:18
【问题描述】:
我正在尝试制作一个简单的countRows 函数来计算我在动态范围内拥有的单元格数量。基本上,如果我在单元格中有值,例如 B2:B500,则计数将返回 499。但是,下次值在单元格 B2:B501 中时,计数将返回 500。但是您不必对单元格中的单元格做任何事情您在公式中输入的。
我想如果我将单元格引用为Variant,那么任何值都可以接受。然后找到该单元格的Address 并返回Range 的Count。但我收到#Value 错误。
Public Function countRows(startRange As Variant)
Dim rng As Range
Set rng = startRange.Address
If IsEmpty(Range(rng, rng.End(xlDown))) = True Then
countRows = 1
Else
countRows = Range(rng, rng.End(xlDown)).Rows.Count
End If
End Function
【问题讨论】:
-
能不能描述的更详细些?
-
Range.Address 返回一个字符串。 set rng = startRange.Address 会抛出错误使用 Set rng = startRange
-
如果您要假设 startRange 是一个范围,那么您应该将其类型转换为一个范围而不是一个变体。 rng 变量对您的代码没有任何作用。你应该消除它。
-
=COUNTA(B:B)-1? -
@YowE3K 我相信 OP 正在尝试从头开始创建一些东西。只是说。
标签: vba function count range excel-udf