>セルが結合している場合、位置が正しく取得できないようです。
原因を存じませんし、MS社のサイトにも芳しい説明を発見できませんでしたが、[Find メソッド] は「結合セル」をスルーするようです。
振り出しに戻りますが、というか、そういう特殊な ケース は、正に、
>okayama394 さんの目の前にある ワークシート に則した コーディング をされることが勉強に繋がると存じます
が、「ヤリ方」は色々あろうかと存じます。
例1)
Dim 最左列, 最右列, 最上行, 最下行
Dim i As Long
Dim MyRng As Range
Set MyRng = Cells.SpecialCells(xlCellTypeLastCell)
For i = 1 To MyRng.Column
If Application.CountA(Columns(i)) > 0 Then 最左列 = i: Exit For
Next
For i = MyRng.Column To 1 Step -1
If Application.CountA(Columns(i)) > 0 Then 最右列 = i: Exit For
Next
For i = 1 To MyRng.Row
If Application.CountA(Rows(i)) > 0 Then 最上行 = i: Exit For
Next
For i = MyRng.Row To 1 Step -1
If Application.CountA(Rows(i)) > 0 Then 最下行 = i: Exit For
Next
Debug.Print "「最左列・最右列・最上行・最下行」=「" _
& 最左列 & "," & 最右列 & "," & 最上行 & "," & 最下行 & "」"
例2)
Dim 最左列, 最右列, 最上行, 最下行
Dim MyRng As String
Dim MyAdd As Variant
Dim i As Long
Dim MyRow() As Long
Dim MyCol() As Long
MyRng = Union( _
Range(Cells.SpecialCells(xlCellTypeConstants, 23).Address), _
Range(Cells.SpecialCells(xlCellTypeFormulas, 23).Address)).Address
MyRng = Replace(MyRng, ":", ",")
MyAdd = Split(MyRng, ",")
ReDim MyRow(UBound(MyAdd))
ReDim MyCol(UBound(MyAdd))
For i = 0 To UBound(MyAdd)
MyRow(i) = Range(MyAdd(i)).Row
MyCol(i) = Range(MyAdd(i)).Column
Next
最左列 = Application.Min(MyCol)
最右列 = Application.Max(MyCol)
最上行 = Application.Min(MyRow)
最下行 = Application.Max(MyRow)
Debug.Print "「最左列・最右列・最上行・最下行」=「" _
& 最左列 & "," & 最右列 & "," & 最上行 & "," & 最下行 & "」"
お礼
お忙しい中、ありがとうございました。 結局、結合されたセルについては、一回結合を解いた上で、 起点と終点を求めることにしました。 文字列検索を行うツールを作成していたのですが、 全体(65536行256列)を対象とすると時間が かかってしまうため、文字列が入力されている範囲のみを 対象にするために、今回の質問をさせて頂きました。 色々、ありがとうございました。