「Set rng = sh.Cells.Find(what:=Date)」
という検索で、アクセスがありました。
結論からお伝えします。
Set rng = sh.Cells.Find(what:=Date)
とは、Worksheet型のオブジェクト変数shに代入されているワークシートの
Set rng = sh.Cells.Find(what:=Date)
全セルから、
Set rng = sh.Cells.Find(what:=Date)
今日の日付の入力されているセルを検索して、
Set rng = sh.Cells.Find(what:=Date)
Range型のオブジェクト変数rngに代入している
Set rng = sh.Cells.Find(what:=Date)
式(コード)です。
今日の日付のセルを検索するサンンプルマクロ
アクティブなワークシートに日付をいくつか入力しておいてから、以下のExcelマクロを実行してください。
On Error GoTo ErrHandl
Dim rng As Range
Set rng = Cells.Find(What:=Date)
rng.Select
MsgBox rng.Address(False, False)
ErrHandl:
MsgBox "今日の日付が入力されているセルは見つかりませんでした。"
Err.Clear
End Sub
今日の日付の入力されているセルがあれば、そのセルが選択され、
rng.Select
セル番地がメッセージボックスに表示されます。
MsgBox rng.Address(False, False)
検索できない場合は引数LookInを
今日の日付が入力されているにもかかわらず検索されない場合には、
Set rng = Cells.Find(What:=Date)
の部分を
Set rng = Cells.Find(What:=Date, LookIn:=xlFormulas)
にしてください。
「Cells.Find(What:=Date)」の読解
上記のサンプルマクロの「Cells.Find(What:=Date)」を、読み解いておきましょう。
全セルを表すRangeを返すCellsプロパティ
上記マクロの「Cells」は、
Set rng = Cells.Find(What:=Date)
Excelライブラリの、グローバルメンバーのCellsプロパティです。
実行されると、アクティブなワークシートの全セルを表すRangeオブジェクトを返します。
この記事のキッカケとなった
「Set rng = sh.Cells.Find(what:=Date)」
の場合は、Worksheetオブジェクトに用意されているCellsプロパティです。
こちらも、そのワークシートの全セルを表すRangeオブジェクトが戻り値です。
セルを検索するRange.Findメソッド
つづく「.Find」は、
Set rng = Cells.Find(What:=Date)
Rangeオブジェクトに用意されているFindメソッドです。
Range.Findの引数Whatに指定されているDateはVBAの関数
Range.Findメソッドの引数Whatに指定されているDateは、
Set rng = Cells.Find(What:=Date)
今日の日付を返すVBAのDate関数です。
最終更新日時:2022-12-13 15:10
Home » Excel VBA Rangeオブジェクト » セル検索 » Excel VBAのCells.Find(What:=Date)とは