はじめに
VBAで日付を扱う処理をしていると、「指定した範囲に今日の日付が入力されているセルがあるかどうかを判定したい」というニーズはよくあります。
私自身も、A列に連続した日付が入力されているシートにおいて、
「今日」の日付が入力されたセルの位置を特定したいと考え、その方法をVBAで実装してみました。
使用する関数:WorksheetFunction.Match
VBAには、Excel関数をそのまま使えるWorksheetFunctionという便利な機能があります。
今回使用するのは、その中のMatch関数です。
これを使うことで、A列の中にある「今日の日付」と一致するセルの位置を取得することができます。
コード例:A1〜A1000に今日の日付があるか検索
Dim find_date As Variant
find_date = WorksheetFunction.Match(CLng(Date), Range("A1:A1000"), 0)
コードの解説
CLng(Date)
Date関数で取得した「今日の日付」は、VBAでは**日付型(Date型)**として扱われます。- しかし、
Match関数では**Excelシート上のシリアル値(Long型)**と一致させる必要があるため、CLng()で変換します。
Range("A1:A1000")
- 検索対象範囲をA1からA1000に設定しています。必要に応じて変更可能です。
0(完全一致)
- Match関数の第3引数に
0を指定することで、「完全一致」モードになります。 - 今日の日付とまったく同じ日付が入力されているセルだけを対象とします。
実行結果の例
たとえば、A列の5行目に2024/05/01という日付が入力されており、
今日の日付が同じであれば、find_dateには「5」という値が格納されます。
この「5」は範囲内(A1:A1000)の5番目という意味であり、行番号そのものではないことに注意してください。
エラー対策:今日の日付が存在しない場合の処理
Match関数は、対象が見つからないとエラーになるという特徴があります。
そのため、事前にエラーハンドリングを入れておくと安全です。
簡易的なエラーハンドリング例
Dim find_date As Variant
On Error Resume Next
find_date = WorksheetFunction.Match(CLng(Date), Range("A1:A1000"), 0)
If IsError(find_date) Then
MsgBox "今日の日付は見つかりませんでした。"
End If
On Error GoTo 0
このようにしておけば、対象が見つからない場合でも処理が中断されることはなく、
ユーザーにメッセージを表示して次の処理に移ることが可能です。
まとめ
VBAで「今日の日付が入力されたセルを検索したい」場合には、以下のポイントを押さえることでスムーズに実装できます。
WorksheetFunction.Matchで検索位置を取得するDate関数で今日の日付を取得し、CLng()でシリアル値に変換するMatchの第3引数に**完全一致(0)**を指定する- 対象が見つからなかった場合のエラーハンドリングも忘れずに
このテクニックを活用すれば、日付をキーにした自動化処理がよりスマートに構築できるようになります。
副業から独立まで「稼げる」Webスキルを習得する(PR)
ここまで読んでいただきありがとうございます。 最後に宣伝をさせてください。
「副業を始めたいが、何から手をつければいいかわからない」「独学でスキルはついたが、収益化できていない」という悩みを持つ方には、マンツーマン指導のWebスクール**「メイカラ」**が適しています。
このスクールは、単に技術を教えるだけでなく、**「副業として具体的にどう稼ぐか」**という実務直結のノウハウ提供に特化している点が特徴です。
講師陣は、実際に「副業Webライターから1年で独立して月収100万円」を達成したプロや、現役で利益を出し続けているブロガーなど、確かな実績を持つプレイヤーのみで構成されています。そのため、机上の空論ではない、現場で通用する戦術を学ぶことができます。
副業に特化した強み
- 最短ルートの提示: 未経験からでも実績を出せるよう、マンツーマンで指導。
- AI活用の習得: 副業の時間対効果を最大化するための、正しいAI活用スキルも網羅。
- 案件獲得のチャンス: 運営がWebマーケティング会社であるため、実力次第で社内案件の紹介など、仕事に直結する可能性があります。
受講者の多くは、「在宅でできる仕事を探している」「副業を頑張りたい」という20代・30代・40代が中心です。
受講前には、講師による無料説明が行われます。無理な勧誘はなく、自分に合った副業スタイルやプランを相談できるため、まずは話を聞いてみることから始めてみてはいかがでしょうか。
