在excel vba中创build一个范围从几个范围

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

我想创build一个范围(matrix范围),这是该地区的底部部分。

我想要做的是为我使用的每个列创build一个范围,并将其添加到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) 

有没有更容易的方法来创build这个范围,或者以某种方式解决这个问题?

提前致谢

您似乎没有为OldRange设置初始范围,因此在第一次迭代期间它将为Nothing,这可能是您错误的原因。

删除这一行:

 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))