Создание диапазона из нескольких диапазонов в Excel VBA
У меня есть лист с матрицей, которая разделена по диагонали с черной ячейкой. Матрица содержит одинаковый заголовок, как по вертикали, так и по горизонтали. Идея состоит в том, что вы показываете связь между предметами в нижней области, ниже диагонали.
Я хочу создать 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 ответ
Похоже, вы не установили начальный диапазон для OldRange, поэтому на первой итерации он будет нулевым - вероятная причина вашей ошибки.
Удалить эту строку:
Set OldRange = MatrixRange
Исправьте эту строку, чтобы включить точку перед ячейками:
Set NextRange = .Range(Range("B9").Offset(n + 1, n), .Cells(78, n + 2))
и перед For Loop добавьте это (дополнительная точка отмечена, спасибо Jeeped):
Set OldRange = .Range(.Range("B9").Offset(1,0), .Cells(78, 2))