在excel vba中创建多个范围的范围

时间:2016-03-16 11:37:20

标签: excel vba excel-vba range

我有一个带矩阵的工作表,它与黑色的单元格对角划分。矩阵包含相同的标题,包括垂直和水平。 这个想法是你在底部区域,对角线下面显示项目之间的关系。

我想创建一个Range(MatrixRange),它是该区域的底部。

我要做的是为我使用的每一列创建一个范围,并将其添加到MatrixRange。因此,我试图结合的不同范围具有不同的高度。

Dim MatrixRange As Range

Private Sub Workbook_Open()

Dim n As Integer
Dim NextRange As Range
Dim OldRange As Range
Dim ws As Worksheet

Set ws = Sheets("Systemmatrise")

With ws
    For n = 1 To 68
        Set OldRange = MatrixRange
        Set NextRange = .Range(Range("B9").Offset(n + 1, n), Cells(78, n + 2))
        Set MatrixRange = Union(OldRange, NextRange)

    Next n

End With

Debug.Print MatrixRange

End Sub

我在

之后收到“运行时错误5”
Set MatrixRange = Union(OldRange, NextRange)

是否有更简单的方法来创建此范围,或以某种方式解决此问题?

提前致谢

1 个答案:

答案 0 :(得分:0)

您似乎无法为OldRange设置初始范围,因此在第一次迭代期间它将无效 - 可能是您出错的原因。

删除此行:

Set OldRange = MatrixRange

纠正此行以在单元格前面包含一个点:

Set NextRange = .Range(Range("B9").Offset(n + 1, n), .Cells(78, n + 2))

在For循环之前,加上这个(注明额外的点,谢谢Jeeped):

Set OldRange = .Range(.Range("B9").Offset(1,0), .Cells(78, 2))