寻找合并单元格的边界?

问题描述 投票:0回答:3

我正在尝试确定合并单元格的边界(它是起始单元格和结束单元格)。

这是一个日程安排工具,我使用这两行作为一种日历。我尝试使用 .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 作为地址。我还附上了问题的图片。

excel vba
3个回答
8
投票

这就是

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
投票

尝试

MsgBox rStart.Address
MsgBox rStart.MergeArea(rStart.MergeArea.Count).Address

0
投票

x = 拆分(替换(替换(范围("A4").MergeArea.Address, "A", ""), "$", ""), ":") ' '其中“A4”是合并区域中的单元格 ' “A”是列 'x(0) = 第一行号 'x(1) = 最后一行号

© www.soinside.com 2019 - 2024. All rights reserved.