如何range.find合并单元格中的值

时间:2016-06-07 11:10:31

标签: excel vba excel-vba merge excel-2010

我有一个包含合并单元格的工作表(例如B2:C3,其值为“myValue”)。如果我尝试使用

搜索合并单元格中的值
r = ThisWorkbook.ActiveWorksheets.Range("$A:$D").Find("myValue")
Debug.Print r.Address

我只获得具有相似值但不包含合并单元格的其他单个单元格的地址。

如何使用VBA执行此操作?如果我使用Excel的手动搜索功能,它会立即找到该值。

祝你好运, 哈利

编辑:当我使用Gary的代码时,我得到一个运行时错误91.变量r是Nothing。

enter image description here

2 个答案:

答案 0 :(得分:1)

清理一些事情:

Sub MAIN()
    Dim r As Range

    Call Setup
    Set r = ThisWorkbook.ActiveSheet.Range("$A:$D").Find("myValue")
    Debug.Print r.Address
End Sub

Sub Setup()
    Dim rng As Range

    Set rng = Range("B2:C3")

    With rng
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With

    rng.Value = "MyValue"
End Sub

将为您提供合并区域的左上角

enter image description here

答案 1 :(得分:0)

您应该使用MergeArea来处理此类情况:

Sub test()
    Dim r As Range
    Set r = ThisWorkbook.ActiveSheet.[A:D].Find("myValue")
    Debug.Print r.MergeArea.Address
End Sub