从函数返回值到单元格

时间:2019-06-18 13:42:31

标签: excel vba

我正在尝试从函数返回值,但不确定如何执行此操作。我要返回的位置是工作表(1)上“ G22:I26”的合并单元格,而原始功能正在工作表(3)上完成。

nil

1 个答案:

答案 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行到最后一个条目的空白,则必须对函数进行一些修改。