検索値が日付だとエラーになる!?WorksheetFunction.Matchメソッド超簡単解決法|VBA備忘録

2025年10月7日

日付をMatchで検索したい…!

Excelシートの3行目にある日付の中からA2セルに入っている日付は何列目かをVBAで探します。

Matchで日付が検索できない…!?

ところがどっこい

Dim hani As Range

Dim d1 As Date

Dim tk As Long

Set hani = Range("3:3")

d1 = Range("A2")

tk = WorksheetFunction.Match(d1, hani, 0)

↑だとMatchの部分でエラーに!!!

よく見るエラーですね…
実行時エラー '1004’:
WorksheetFunction クラスの Match プロパティを取得できません。

Shironeco(嫁)
Shironeco(嫁)
な、なんでよ…!?

どうもMatchはDate型の検索ができない仕様らしい…!

ちなみにExcel関数なら普通にできる

Shironeco(嫁)
Shironeco(嫁)
なんでよーー!

1をかければなんとかなる

なんでかは全然わかりませんが、VBAではできないみたいなのでなんとかしたい…!
解決策は簡単で1をかければいいみたいです。数値に戻すってイメージなのかしら…?
検索値である日付 d1に×1すればすべて解決します。

Shironeco(嫁)
Shironeco(嫁)
それだけ…?
Sub Matchで日付を検索する()

Dim hani As Range
Dim d1 As Date
Dim tk As Long
Set hani = Range("3:3")
d1 = Range("A2")
tk = WorksheetFunction.Match(d1 * 1, hani, 0)
MsgBox d1 & "は" & tk & "番目です"

End Sub

Shironeco(嫁)
Shironeco(嫁)
できた~

他にもVBAのやり方あり〼


VBAを体系的に学びたい方は、以下の教材もおすすめです。

効率化を目指すも何していいかわからない方!!VBAを勉強すると普段使っているExcelがめちゃくちゃ便利になります。

  • ・独学で圧倒的効率化めざしてるならこれ

  • ・1st stepなら12,000円でVBAの基礎講座がオンラインで受講できる!!!

    わからないところはチャットで聞けますよ~