Нахождение границ объединенной ячейки? - PullRequest
2 голосов
/ 10 июня 2019

Я пытаюсь определить границы объединенной ячейки (это начальная ячейка и ее конечная ячейка).

Это для инструмента планирования, где я использую эти две строки как своего рода календарь. Я попытался установить диапазон для начальной и конечной ячеек, используя .Count, но мне не повезло, так как оба выводили адрес начальной ячейки.

Set rDate = Sheet1.Range("G2:" & sCol & "3")
Set rMonth = rDate.Find(sMonth)

    If rDate.MergeCells Then
        Set rStart = rDate.Cells(1, 1)
        Set rEnd = rDate.Cells(rDate.Rows.Count, rDate.Columns.Count)
    End If

MsgBox rStart.Address
MsgBox rEnd.Address

Оба диапазона выводят G2 в качестве адреса. Я также приложил изображение проблемы.

enter image description here

Ответы [ 2 ]

7 голосов
/ 10 июня 2019

Вот что такое Range.MergeArea:

Возвращает объект Range , представляющий объединенный диапазон, содержащий указанную ячейку. Если указанная ячейка не находится в объединенном диапазоне, это свойство возвращает указанную ячейку.

If rDate.MergeCells ' not really necessary, unless you only want to work with a merged cell
    MsgBox rDate.MergeArea.Address
End If

Также отметим, что вы ссылаетесь на объединенную ячейку по ее самой верхней, самой левой ячейке:

Set rDate = Range("G2") 'this is still a merged cell.

Если вы хотите сослаться на начальную и конечную ячейки, возможно, что-то вроде этого:

Sub Test()
    Dim rDate As Range
    Set rDate = Sheet1.Range("G2")

    If rDate.MergeCells Then
        Dim startAddress As String
        startAddress = Split(rDate.MergeArea.Address, ":")(0)

        Dim endAddress As String
        endAddress = Split(rDate.MergeArea.Address, ":")(1)
    End If

    MsgBox "The start address is " & startAddress & _
           " and the end address is " & endAddress & "."
End Sub
2 голосов
/ 10 июня 2019

Попробуйте

MsgBox rStart.Address
MsgBox rStart.MergeArea(rStart.MergeArea.Count).Address
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...