我正在尝试从函数返回值,但不确定如何执行此操作。我要返回的位置是工作表(1)上“ G22:I26”的合并单元格,而原始功能正在工作表(3)上完成。
nil
答案 0 :(得分:2)
如何返回函数结果
基本上,您将结果返回给函数而不是子过程(不对直接通过引用传递的参数进行更改-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行到最后一个条目的空白,则必须对函数进行一些修改。