[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『ブックを開くと本日日付のセルを表示 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
お休みのところ、早速のお返事をありがとうこざいます!<m(__)m>
>>この日付形式 >どんな書式になっているんですか? (全部、同じ書式ですか?) はい、全て書式はセルのユーザー設定で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)))
回答の早さ共、
とても素晴らしく感動いたしました!
半平太様、大変ありがとうございました。<m(__)m>
(ことみ) 2016/11/06(日) 11:09
>find ではなく CLng関数、という事でしょうか…
いやそんな事ではなく、 「B列にしかないのが分かっているなら、Match関数で日付が何行目にあるか探ればいい」(※) と言う考え方です。
その際、Matchの検索値が「Date型」だとヒットしないので、 Date値をCLng関数でLong型に変換する、と言うことです。
(※) Findは、「値」か「式」でしか検索できない。
「値」と言っても、表示値を見に行くものである。 これはセルの書式に左右されることであり、状況依存の不安定な検索方法と言えます。
「式」と言っても、Formulaプロパティしか見ない。(Valueプロパティと同じ保証はない)
以上により「数式の結果値」を探索するには中途半端なメソッドである、と言えます。
(半平太) 2016/11/06(日) 12:27
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.