Доберитесь запускают диапазон и диапазон конца вертикально объединенной ячейки с Excel с помощью VBA

Я должен узнать первую ячейку и последнюю ячейку вертикально объединенной ячейки..

Скажем, я объединяю Ячейки B2 вниз к B50.
Как я могу войти в VBA ячейка запуска (=B2) и конечная ячейка (=B50)?

14
задан Community 9 July 2018 в 19:34
поделиться

3 ответа

Sub MergedAreaStartAndEnd()

    Dim rng As Range
    Dim rngStart As Range
    Dim rngEnd As Range

    Set rng = Range("B2")

    If rng.MergeCells Then

        Set rng = rng.MergeArea
        Set rngStart = rng.Cells(1, 1)
        Set rngEnd = rng.Cells(rng.Rows.Count, rng.Columns.Count)

        MsgBox "First Cell " & rngStart.Address & vbNewLine & "Last Cell " & rngEnd.Address

    Else

        MsgBox "Not merged area"

    End If

End Sub
23
ответ дан 1 December 2019 в 09:12
поделиться

Если вы хотите, чтобы ссылки на ячейки были строками, вы можете использовать что-то вроде этого, где Location, StartCell и EndCell являются строковыми переменными.

Location = Selection.Address(False, False)
Colon = InStr(Location, ":")
If Colon <> 0 Then
    StartCell = Left(Location, Colon - 1)
    EndCell = Mid(Location, Colon + 1)
End If

Если вы хотите установить их как диапазоны, вы можете добавить это, где StartRange и EndRange - это объекты диапазона.

set StartRange = Range(StartCell)
set EndRange = Range (EndCell)
0
ответ дан 1 December 2019 в 09:12
поделиться

Ну, если вы знаете адрес одной из ячеек в объединенном диапазоне, вы можете просто выбрать смещение из этого диапазона и получить строку/столбец:

Sub GetMergedRows()
    Range("A7").Select 'this assumes you know at least one cell in a merged range.
    ActiveCell.Offset(-1, 0).Select
    iStartRow = ActiveCell.Row + 1
    Range("A7").Select
    ActiveCell.Offset(1, 0).Select
    iEndRow = ActiveCell.Row - 1
    MsgBox iStartRow & ":" & iEndRow
End Sub

Приведенный выше код будет выдавать ошибки, если смещенная строка не может быть выбрана (т.е. если объединенные строки от A1 до whatever), поэтому вы захотите добавить обработку ошибок, которая сообщит коду, что если он не может сместить вверх, верхняя строка должна быть 1, а если он не может спуститься вниз, нижняя строка должна быть 65,536. Этот код также является одномерным, поэтому вы можете добавить ось x.

0
ответ дан 1 December 2019 в 09:12
поделиться
Другие вопросы по тегам:

Похожие вопросы: