Я должен узнать первую ячейку и последнюю ячейку вертикально объединенной ячейки..
Скажем, я объединяю Ячейки B2 вниз к B50.
Как я могу войти в VBA ячейка запуска (=B2) и конечная ячейка (=B50)?
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
Если вы хотите, чтобы ссылки на ячейки были строками, вы можете использовать что-то вроде этого, где 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)
Ну, если вы знаете адрес одной из ячеек в объединенном диапазоне, вы можете просто выбрать смещение из этого диапазона и получить строку/столбец:
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.