アクティブセルの日付を検索範囲から検索して交差するセルを選択するには?

Question 91.1 Excel VBA Borad (掲示板)より Previous Next
ワークシート はじめまして。VBAの初心者です。
日程表を作っているのですが。
今、エクセルに右図ように数値が入っています。
で、以下のように動作するようにしたいのです。

「A2」がアクティブのときマクロを起動すると、「B2」がアクティブになる。
「A3」がアクティブのときマクロを起動すると、「D3」がアクティブになる。
「A4」がアクティブのときマクロを起動すると、「F4」がアクティブになる。

つまり、A列の日付を自動で判断して、該当する日付の列にジャンプしたいのです。
(ただし、行はアクティブにした行のまま)
ちなみに1行目には、3か月分ぐらいの日付が入っています。 また、A列は新しいプロジェクトがあるたびに、順次日付が増えていきます(5行目、6行目……)
どのようにすればよろしいのでしょうか。 ご教示お願いいたします。

【補足説明】
「A2」がアクティブのときマクロを起動するというのは、A2セルを選択してから、それ用のボタンをクリックすると、という意味で、現在書けるものはこんな感じですが。。。
Sub search_day()
    Dim Search As Range
    Set Search = Range("B1:F1").Find(Range("A2").Value)
    If Search Is Nothing Then
        MsgBox "該当する日付はありません"
    Else
        Search.Select
    End If
End Sub
これでは、
 (あ)日付が文字列になっていないと使えない。
 (い)1行目の該当する日付は探せるが、アクティブにしたセルの行ではなくなってしまう。
 (う)そして、何より、A列の日付の数だけマクロを書かなければならない。
つまり、まったく用をなさない。 というような状況です。。。
Answer   2008.11.7 永井善王
きちんと要件を掴んでみえますね。方向性は合っていると思いますよ。
ただ、おっしゃるとおり、Find は「指定された文字列を他の文字列の中で検索」するので、日付はダメですね。 かわりに下記のとおり For Each...Next 利用がわかりやすいかと。
Sub アクティブセルの日付を検索範囲から検索して交差するセルを選択する()
    検索範囲 = "B1:F1"
    検索値 = ActiveCell
    For Each 各セル In Range(検索範囲)
        If 各セル.Value = 検索値 Then
            列 = 各セル.Column
            行 = ActiveCell.Row
            Cells(行, 列).Select
            Exit Sub
        End If
    Next
    MsgBox "該当する日付はありません"
End Sub
なお、Search は予約語ですから変数名には使えないはずです。 ガンバ!
ありがとうございました
ご丁寧なご説明ありがとうございます。
お教えいただいたとおりにやってみたところ、思っていた通りに動いてくれました。長い間できずに悩んでいたことができて、とてもすっきりしました。
本当にうれしいです。ありがとうございました。

 

Excel VBA Macro