【VBA備忘録】Matchで日付が使えない

2024年3月6日

日付を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すればすべて解決します。

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のやり方あり〼