Set fd = Range("A:A").Find(what:=dd, LookIn:=xlValues)
Cells(9, 5) = fd.Row
1)Findメソッドは、LookIn:=xlValuesとしたとき、「表示された文字列」を検索します。
2)日付は、唯一無二の存在です。なので、年月日を確実に入力しておかないと、読むタイミング等によって勘違いが発生し思い通りの結果が得られない可能性が出てきます。逆に「5/1」とセルに入力しても、エクセル君が忖度して、勝手に年を追加してしまうので、操作者の思いと違うデータが入っている可能性があります。
なので、セルに、
2020/2/2
2020/3/3
2020/4/4
2020/5/2
2020/5/5
2020/6/6
という「日付型の値(シリアル値)」が入っているとして、
セルの表示形式が「M/D」と定義されている場合に、
「2」を指定して、2020/5/2を探す場合は、
一旦、セルの表示形式を「D」に変えてから検索し
用が済んだら「M/D」に戻す。
というような作業をすることになると思います。
「5/2」という文字列で検索するなら同じく
「M/D」と表示させてから検索します。
3)それから、Findメソッドは、各引数を省略すると、
手動かマクロかを問わず、前回の実行の設定を引き継ぎますので、
分かっていて省略するならいいですが、
引数は省略しない方がより良いです。
たまに結果が変わることがあるので。
4)日付をシリアル値で検索するなら、Match関数で検索することもできます。
そうすると、表示形式に影響されることなく検索ができます。
一応サンプルです。
ExcelVBA
1Sub test()
2 Dim rngDays As Range
3 Dim ixRow As Variant
4
5
6 Set rngDays = Range("A9").Resize(31)
7 ixRow = Application.Match(#5/2/2020#, rngDays, 0)
8
9 If IsError(ixRow) Then
10 ixRow = Empty
11 Else
12 ixRow = rngDays(ixRow).Row
13 End If
14
15 Range("E9").Value = ixRow
16End Sub
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/20 02:37