2016-06-07 5 views
0

Ich habe ein Arbeitsblatt mit verbundenen Zellen (z. B. B2: C3 mit Wert "myValue"). Wenn ich versuche, einen Wert zu suchen, die in einer verbundenen Zelle ist mitWie zu range.find ein Wert in einer verbundenen Zelle

r = ThisWorkbook.ActiveWorksheets.Range("$A:$D").Find("myValue") 
Debug.Print r.Address 

erhalte ich nur die Adresse von anderen einzelnen Zellen mit ähnlichen Werten, aber nicht der fusionierten Zelle.

Wie kann ich das mit VBA? Wenn ich die manuelle Suchfunktion von Excel verwende, findet es den Wert in kürzester Zeit.

Mit freundlichen Grüßen, Harry

EDIT: Wenn ich den Code aus Gary verwende ich bekommen einen Laufzeitfehler 91. Die Variable r Nichts ist.

enter image description here

+1

Bereich ("B2: C3"). Zellen (1) .Wert? kann dem Zweck dienen. Alternativ ~ Bereich ("B2"). MergeArea.Cells (1,1) .Value ~ Wenn Sie die Grenzen des zusammengeführten Bereichs nicht kennen. – skkakkar

Antwort

1

ein paar Dinge Reinigung:

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 

Werden Sie die oberen linken Ecke des bekommen verschmolzener Bereich:

enter image description here

+0

Welche Version von Excel verwenden Sie? Ich benutze Excel 2010. Vielleicht ist das das Problem :( – HarryKane

+0

@HarryKane Ich verwende * Excel 2007 * mit * Windows 7 * –

+0

Ihr Beispiel ist, was ich erwartet habe, aber wie Sie in meiner Bearbeitung sehen können, funktioniert es nicht. Danke – HarryKane

0

sollten Sie MergeArea für solche Fälle verwenden:

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