Создание диапазона из нескольких диапазонов в 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))
Другие вопросы по тегам