『ブックを開くと本日日付のセルを表示 Auto_Open()』(ことみ) 先ほどやっと、使用のExcel2007でのVBA編集画面の開き方を知ったほどの VBAビギナーで 至極恐縮です。 車や会議室の予約表ブックです。 シートは月別に12シートあり、 ひと月分1シートには、1日毎に8時から20時までの小さな表が 月の日数分30ないし31あります。 日付は個表の先頭セルに表示させていて、 前日の日付セル+1という数式で入っています。 このブックを開いた時に、開いた当日の日付の表を表示させたいと四苦八苦しております。 ここに、ネットで調べた Sub Auto_Open()  Dim sh As Worksheet  Dim rng As Range  Application.ScreenUpdating = False  For Each sh In Worksheets   sh.Activate   Set rng = sh.Cells.Find(what:=Date)   If Not (rng Is Nothing) Then    rng.Activate    Exit For   End If  Next sh  Application.ScreenUpdating = True End Sub を入れましたが、機能しません。 VBA編集画面で実行すると、「型がありません」というエラーが出ます。 12月分×30ほどもある個表の日付セルを修正するしかないのでしょうか。 この日付形式でも機能するVBAの組み方があるのでしょうか。 < 使用 Excel:Excel2007、使用 OS:Windows7 > ---- 日付の検索は、時にすごく厄介になることがあります。 >「型がありません」というエラー これは、ちょっと思い当たらないです。 >この日付形式 どんな書式になっているんですか? (全部、同じ書式ですか?) >日付は個表の先頭セルに表示させていて、 個表の先頭セルは決まった位置にあるんですか? (例:A列に全部ある) >前日 一番先頭の日付(月初)は、どんな値ですか。 (半平太) 2016/11/06(日) 08:23 ---- ★半平太様★ お休みのところ、早速のお返事をありがとうこざいます! >>この日付形式 >どんな書式になっているんですか? (全部、同じ書式ですか?) はい、全て書式はセルのユーザー設定でd"日""("aaa")"です >>日付は個表の先頭セルに表示させていて、 >個表の先頭セルは決まった位置にあるんですか? (例:A列に全部ある はい、B列に、全てあります >>前日 >一番先頭の日付(月初)は、どんな値ですか。 その月の一日は 数式バーでは 西暦年yyyy/月mm/日dd と表示されています。 毎年更新時に、月ごとに 一日のセルのみ日付入力をして更新させています。 (ことみ) 2016/11/06(日) 09:10 ---- >B列に、全てあります なら以下のコードの方が簡明です。 ※(日付の検索には問題山積みの)Findメソッドは使わない方がいいです。 Sub Auto_Open() Dim sh As Worksheet Dim rng As Range, Pos As Variant Application.ScreenUpdating = False For Each sh In Worksheets sh.Activate Pos = Application.Match(CLng(Date), Range("B:B"), 0) If IsNumeric(Pos) Then Cells(Pos, "B").Activate Exit For End If Next sh Application.ScreenUpdating = True End Sub (半平太) 2016/11/06(日) 09:29 ---- ★半平太様★ find ではなく CLng関数、という事でしょうか… 辞典をひいて「指定された式をバリアント型 (内部処理形式が長整数型 (Long) の Variant) に変換して返します。」という説明を読んでもサッパリわかりませんでした(;´∀`) お時間の許す時にでも、 この構築のご説明を伺えたなら☆ ペーストして上書き保存し、 機能しました!! とても嬉しいです!!(((o(*゚▽゚*)o))) 回答の早さ共、 とても素晴らしく感動いたしました! 半平太様、大変ありがとうございました。 (ことみ) 2016/11/06(日) 11:09 ---- >find ではなく CLng関数、という事でしょうか… いやそんな事ではなく、 「B列にしかないのが分かっているなら、Match関数で日付が何行目にあるか探ればいい」(※) と言う考え方です。 その際、Matchの検索値が「Date型」だとヒットしないので、 Date値をCLng関数でLong型に変換する、と言うことです。 (※) Findは、「値」か「式」でしか検索できない。 「値」と言っても、表示値を見に行くものである。 これはセルの書式に左右されることであり、状況依存の不安定な検索方法と言えます。 「式」と言っても、Formulaプロパティしか見ない。(Valueプロパティと同じ保証はない) 以上により「数式の結果値」を探索するには中途半端なメソッドである、と言えます。 (半平太) 2016/11/06(日) 12:27