検索値が日付だとエラーになる!?WorksheetFunction.Matchメソッド超簡単解決法|VBA備忘録
日付を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 プロパティを取得できません。

な、なんでよ…!?
どうもMatchはDate型の検索ができない仕様らしい…!
ちなみにExcel関数なら普通にできる

なんでよーー!
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

できた~
他にもVBAのやり方あり〼
- 電帳法対応!Excelで作成した請求書をOutlookのメールに一瞬で添付できる(サンプルあり〼)|Excel活用術
- 【VBA備忘録】If文は難しくない!条件分岐マスター講座
- 初心者脱却~コピペは配列を使え!~|VBA高速・効率化テクニック
- もっと爆速!別ブックを開かずにテキストデータを取得する|VBA高速・効率化テクニック(サンプル付き)
- 爆速!別ブックを開かずに値を取得する|VBA高速・効率化テクニック(サンプル付き)
- 【VBA備忘録】オリジナル関数を作って月の英語表記を数字に変更する
- 【VBA備忘録】給料日が土日祝のとき前日を取得する(会社カレンダー用テンプレあり〼)
- 【VBA備忘録】ListObject(テーブル)で複数列を選択する(Vlookup)
- 【VBA備忘録】リボンにマクロを追加してクイック起動(Outlook編)
- VBAで特殊記号や禁則文字を入力したい!(一覧表あり〼)|教科書に載ってないVBAテクニック