|
A6(2009/3/1)〜A2196(2015/2/28)まで、当年の3月1日から連続した日にち
があります。
表示は「3月1日」のようになっており『年』は表示していません。
InputBoxに年月日(2011/3/3)を入れてその対象年月日の行をを検出すること
をしています。
For〜NextやMatch関数を使っての検索はできたのですが、
Find関数を使うと、シートの日にちを一旦日付のシリアル値に
変換して、また戻すというスマートさがないやり方になってしまいます。
シート上で月日をシリアル値に変更しないでFind関数で検索する方法を教えてください。
現在は下のコードを考えました。
Sub Find_methodで検索()
Dim r As Range
Dim c As Range
Dim ch
Dim ch2
ch = Application.InputBox(Prompt:="検索したい年月日…3/3のように半
角入力してください" _
& Chr(10) & "当年以外は2013/3/3のように年を入力してくだ
さい", _
Title:="検索", Default:="ここに検索したい日付を入れて下さい",
Type:=1)
If ch = False Then
MsgBox "Cancelが押されました", vbExclamation
Exit Sub
End If
With Range("A1", Cells(Rows.Count, "A").End(xlUp))
.NumberFormatLocal = "G/標準"
End With
Set r = Range("A1", Cells(Rows.Count, "A").End(xlUp))
Set c = r.Find(ch, Range("a1"), _
xlFormulas, xlWhole, , xlPrevious)
If Not c Is Nothing Then
c.Activate
MsgBox "昨日は" & c.Address(0, 0) & "にあります"
Else
MsgBox "その年月日はありません", vbExclamation
End If
With Range("A1", Cells(Rows.Count, "A").End(xlUp))
.NumberFormatLocal = "m""月""d""日"";@"
End With
End Sub
|
|