VBA分配单元格引用function

我需要一个函数,将单元格引用(通过一个数组与CTRL + SHIFT + ENTER)分配给工作表。 问题是:它工作得很好,除非被引用的单元格是空的,这会给数组的所有单元部分带来#VALUE ERROR。 这是我使用的function

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错误,全部丢失。 我应该改变variables声明(变体,范围或其他?)有没有其他更有效的方式来通过函数分配单元格引用?

在你的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 
Interesting Posts