日付を元に見出し行を検索し対応する列の所定のセルをアクティブにするには?
Question 63.2 Previous Next
155万ヒットおめでとうございます。これからも私のような初心者にもやさしいサイトでがんばってください。
VBABoardに書き込みしたのですが他のことがやりたくなったのでまた質問させてください。

ブックに 「○月家計簿」 「○月予算」 「表紙」のワークシートがあります。 「家計簿」 と 「予算」のシートは月ごとにあります。 表紙のシートにボタンをつけて、ボタンをクリックしたらブック内の家計簿シートの当月をアクティブにし、 そのシートの中にある当日日付のセルの 7行目をアクティブにしたいのです。

家計簿シートはA列に「項目」(野菜、交通費など)、B・C列に 25日の「詳細」(キャベツ、バス代など)「金額」、D・E列に 26日の「詳細」「金額」、・・・ とつづきます。
A1に日付、B1に曜日が入力されております。 つまり、9/26に「表紙」のボタンをクリックしたら「9月家計簿」の9/26の 7行目、E7をアクティブにしたいです。
よろしくお願いします。
Answer   Copyright (C) 2003.9.29 永井善王
お祝いのお言葉、ありがとうございます。
ボタンをクリックするだけで、家計簿シートの当日のセルを選択するマクロを組みたいのですね。

 家計簿シート
家計簿シート 左図のとおり、ご質問文からワークシートを再現してみました。赤いセルが 「9/26なら E7セルを選択する」 というセルです。

なぜ、E7セルになるのか、E列が 26日ということは理解できますが、7行目になる根拠がわかりません。
もう一つ、質問文の青字の部分は、どのシートのことなのか、E7セルの選択とどんな関連があるのかが、はっきりしません。

それらのために回答は、ボタンをクリックすると家計簿シートの当日日付の金額の列を検索し、その列の 7行目のセルをアクティブにする部分に限らせていただきます。(なお、当日日付が1~24日ならば25日と同様としました)
Option Explicit
Dim 右端, 見出し範囲, 日, 検索する文字列, セル, 列

Sub 当日日付を元に見出し行を検索し対応する列の所定のセルをアクティブにする()
    Worksheets("9月家計簿").Activate
    家計簿シートの見出し行の範囲を取得する
    今日の日付から検索する文字列を編集する
    当日日付の金額の列を検索して所定のセルをアクティブにする
End Sub

Private Sub 家計簿シートの見出し行の範囲を取得する()
    Range("A1").End(xlToRight).Select           '1行目の右端セルを選択する
    右端 = Replace(ActiveCell.Address, "$", "") 'アクティブセルアドレス取得$記号削除
    見出し範囲 = "A1:" & 右端 & "1"             '見出し行の範囲を取得する
End Sub

Private Sub 今日の日付から検索する文字列を編集する()
    日 = Day(Now)                               '今日の日付から日を取り出す
    If 日 < 25 Then 日 = 25                     '1~24日ならば25とする
    検索する文字列 = 日 & "日金額"               '検索する文字列を編集する
End Sub

Private Sub 当日日付の金額の列を検索して所定のセルをアクティブにする()
    With Range(見出し範囲)                      '見出し範囲を対象にする
        Set セル = .Find(検索する文字列, LookIn:=xlValues) '見つかった最初のセルを取得
        If Not セル Is Nothing Then             '見つかった場合は
            列 = セル.Column                    'セルの列番号を取得する
            Cells(7, 列).Activate           '取得した列の7行目のセルをアクティブにする
        End If
    End With
End Sub
このマクロを「表紙」シートに作成したボタンに登録します。ボタンは[フォーム]ツールバーで作成することをお勧めします。
また、今日の日付から月を取り出して、対応する月の家計簿シートをアクティブにするコードも必要ですが、上例と下記のページを参考にしながら、ご自分で工夫してみてください。力が付きますから。

参考ページ: 
指定ブックの指定シートをアクティブにする

 

Excel VBA Macro