シートに目的の文字があるのならば、そのセルのアドレスを取得したいのですが
いつも$1:$1048576が返されます。
コードは、
Function test()
With Sheets("Sheet1")
If Not .Cells.Find(What:="aaa") Is Nothing Then 'あるならば
Debug.Print .Cells.Address
End If
End With
End Function
です。
aaaはA3にあるとします。
なので、A3という戻り値がほしいのですが、いつも決まった値が返ってきてしまうので、
見つかったセルの値を取得する方法を教えてください。
Debug.Print .Cells.Address
としているのだから、検索とは関係なしに、シートの全セルが返されるのは当然。
"aaa"のあるセルを返したいなら、
With Sheets("Sheet1")
Set c = .Cells.Find(What:="aaa")
If Not c Is Nothing Then 'あるならば
Debug.Print c.Address
End If
End With
とでもしなければダメでしょう。
なお、Findを使うなら、ワークシート上で検索した場合も含めて、前に検索した条件を引き継ぐので、そのままでは予期せぬ結果になることがある。これを防止するために、Lookinとかのほかの引数も指定してやった方がいい。
Function test()
With Sheets("Sheet1")
If Not .Cells.Find(What:="aaa") Is Nothing Then 'あるならば
Debug.Print .Cells.Find(What:="aaa").Address ’致命的勘違い
End If
End With
End Function
#参考
sub macro1()
debug.print test2("aaa")
end sub
function test2(a)
on error resume next
test2 = worksheets("Sheet1").cells.find(what:=a).address
end function
お礼
回答ありがとうございました。