excel - 从函数返回值到单元格
问题描述
我正在尝试从函数返回一个值,但不知道该怎么做。我想将其返回到的位置是工作表(1)上“G22:I26”的合并单元格,原始功能正在工作表(3)上完成。
Sub CountBlank()
Dim xxEmpty As Long
Dim LastRow As Long
LastRow = Worksheets(3).Cells(Rows.Count, 3).End(xlUp).Row
xxEmpty = Worksheets(3).CountBlank(Range("CY2:CY" & LastRow))
Return xxEmpty = Worksheets(1).Cells("G22:I26") 'Syntax Error
End Sub
解决方案
如何返回函数结果
基本上,您将结果返回给函数而不是子过程(不考虑对通过引用传递的参数的直接更改 - ByRef
)。Return
没有像在其他编程语言中那样返回此类函数结果的有效方法,您必须为函数本身分配一个值。
此外,您必须使用Worksheetfunction.CountBlank
函数(或Application.CountBlank
),CountBlank 本身不是与您尝试的工作表相关的函数或方法xxEmpty = Worksheets(3).CountBlank(…)
。
最终避免使用现有名称重载getBlanks()
过程,因此请调用您的函数,例如,但不是CountBlank()
。
a) 在 VB 编辑器的即时窗口中显示结果的示例调用:
Sub Test()
Dim LastRow As Long
LastRow = Worksheets(3).Cells(Rows.Count, 3).End(xlUp).Row
Debug.Print getBlanks(Worksheets(3).Range("CY2:CY" & LastRow)) & " blank rows counted"
End Sub
Function getBlanks(rng As Range) As Long
' Help:
' Return xxEmpty = Worksheets(1).Cells("G22:I26") 'Syntax Error
getBlanks = WorksheetFunction.CountBlank(rng)
End Function
如果要将函数结果直接返回到单元格,则可以只输入函数名称,选择精确范围作为参数:
=getBlanks(CY2:CY4711)
或者,如果您只想计算从第 2 行到最后一个条目的空白,则必须稍微修改该函数。
推荐阅读
- excel - 通过 VBA 更新表
- c++ - 静态库的链接和加载
- javascript - 在JS中将数组语句的第一个字母大写
- javascript - 未捕获的语法错误:导出和导入类时无法在模块外部使用导入语句
- c++ - 关于在嵌入式系统上使用 std::filesystem 的建议
- linux - 如何使用 bash 脚本替换文件中某行的某些内容?
- python - 我在连接我正在制作的书店 gui 的前端和后端时遇到问题
- javascript - 简单的 Javascript 将数字从 1 到 11 转换成单词?
- python - 具有多个条件的 pyarrow 数据集过滤
- flutter - 如何从 Bottomnavigationbar 类访问 tabcontroler 到 tabBar_view 类?