联合功能不适用于单细胞范围vba

时间:2015-03-27 19:33:05

标签: excel vba

在这段代码中,我试图使用union函数逐个单元格构建一个范围单元格。

Function getColumnFromRowIndices(ByRef ws As Worksheet, columnHeader As String, rowIndices() As Long, ByRef headerCells_byHeader As Dictionary) As range

    Dim gCFRI As range 'function alias
    Dim cL As String: cL = getColumnLetterOfCell(headerCells_byHeader(columnHeader))

    If Not IsEmpty(rowIndices) Then

        Dim rI As Variant: For Each rI In rowIndices

            If gCFRI Is Nothing Then Set gCFRI = ws.range(cL & CLng(rI)) _
            Else Set gCFRI = Union(gCFRI, ws.range(cL & CLng(rI)))

        Next rI

    End If

    Set getColumnFromRowIndices = gCFRI

End function

我遇到的问题是工会没有建立起来。当我在监视窗口中观看ws.range(cL& CLng(rI))时,它会按预期列出我要添加的新单元格。但是每次调用它时,联盟都会在这种情况下恢复为arg1。

我该怎么做才能解决这个问题?

1 个答案:

答案 0 :(得分:1)

移动:

Dim gCFRI As range
UDF 之外的

UDF 所在模块的顶部。这将允许范围“记住”其先前的值和“建立”。