• ベストアンサー

日付自動実行マクロについて質問です。

エクセル2000で日計表を作成しています。 A列には日付のシリアル値が、B列には日付、C列には曜日が入っています。 毎日データを挿入するのはD列からとなります。 そのファイルを開いた時に自動実行マクロでその日のD列にセルを飛ばすのにはどうしたらいいでしょうか? 苦労しています、どなたか詳しい方教えていただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
  • deecyan
  • ベストアンサー率38% (89/233)
回答No.1

こんばんは こんなんでどうでしょう? Sub auto_open() Dim ToDay As Long ToDay = Int(Now() - DateValue(Year(Now) & "/1/1")) For ii = 1 To ActiveSheet.UsedRange.Rows.Count If Cells(ii, 1).value = ToDay Then Cells(ii, 4).Select Exit For End If Next End Sub 日付のシリアル値とゆうのは 1月1日を1とした日ですよね? excelでゆうシリアル値なら ToDayを ToDay = Int(Now()) としてください。

yucky6624
質問者

お礼

ありあがとうございました。 2日あれこれやってやっと出来ました。 参考にさせていただき、 Private Sub Workbook_Open() Dim ToDay As Long ToDay = Int(Now()) For ii = 1 To ActiveSheet.UsedRange.Rows.Count If Cells(ii, 1).Value = ToDay Then Cells(ii, 4).Select Exit For End If Next End Sub としたのですがいいのでしょうか。 とりあえず飛びましたので。 シリアル値とは1900/1/1を1とした日付値です。 VBA良くわからないのですみません。

その他の回答 (1)

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

部外者には下記の点が良く判らないですが。 (1)A列はある日付で考えると、ただ1行しかないのですか。1日1データ=1行ですか。 (2)「A列には日付のシリアル値が、B列には日付」とあるが、両者の違いは?普通は同じものと思いますが。 (3)>でその日のD列にセルを飛ばすのにはどうしたらいいでしょうか? 前もってA列にその日付(先日付)だけは、入っているのですか。 しかし適当に仮定してやってみました。 (テストデータ)Sheet2のA1:D10です 11,12,12,11,2はD列に入っている。 30日のD列は入れてない。 H16.10.25 11 H16.10.26 12 H16.10.27 12 H16.10.28 11 H16.10.29 2 H16.10.30 H16.10.31 H16.11.1 H16.11.2 H16.11.3 (コード) VBEが面のプロジェクトエクスプローラーの VBAProjectの中の ThisWorkbookのWorkbookのOpen イベントに(ブックを開くと、自動実行させるために必要です) Private Sub Workbook_Open() Worksheets("sheet2").Activate d = Range("d65536").End(xlUp).Row For i = 1 To d If Cells(i, "A").Value = ToDay Then Cells(i, "D").Select Exit Sub End If Next i End Sub をいれる。 ブックを閉じて、また開くと、H16.10.31(本日)の行の D列をアクチブにしました。 これで良いのですか。

yucky6624
質問者

お礼

回答ありがとうございました。 お礼申し上げます。 説明不足で失礼しました。 参考にさせていただきました。 NO.1の方の回答でなんとか出来ました。 勉強不足ですみません。