繁体   English   中英

VBA分配单元格引用功能

[英]VBA assigning cell references function

我需要一个函数,将单元格引用(通过带有CTRL + SHIFT + ENTER的数组)分配给工作表。 问题是:除非引用的单元格为空,否则它会正常工作,这会给阵列的所有单元格提供#VALUE ERROR。 这是我使用的功能

Function GeneratePackingList(PackageTable As Range)
Dim bRow As Byte, bCol as Byte
Dim asResult()
ReDim asResult(1 To 25, 1 To 11)

With PackageTable
    For bRow = 1 To .Rows.Count
        For bCol = 1 To 11
            Select Case bCol
                'Rearranging the columns order
                Case 1 To 6:    Set asResult(bRow, bCol) = .Cells(bRow, bCol + 1)
                Case 7:         Set asResult(bRow, bCol) = .Cells(bRow, 1)
                Case 8 To 11:   Set asResult(bRow, bCol) = .Cells(bRow, bCol)
            End Select
        Next bCol
    Next bRow
End With
GeneratePackingList = asResult
End Function

所以基本上如果来自PackageTable的那些单元格中的一个是空的,我得到#VALUE错误并且全部丢失。 我应该更改变量声明(变体,范围或其他??)是否有任何其他更有效的方式通过函数分配单元格引用?

在case子句中使用Set会导致arResult成为Range的数组。 这不是必要的,并且会导致您的问题。 只需删除Set

            Select Case bCol
                'Rearranging the columns order
                Case 1 To 6:     asResult(bRow, bCol) = .Cells(bRow, bCol + 1)
                Case 7:          asResult(bRow, bCol) = .Cells(bRow, 1)
                Case 8 To 11:    asResult(bRow, bCol) = .Cells(bRow, bCol)
            End Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM