- ベストアンサー
EXCEL2002でNOW関数により時刻が15分進む毎に,別のセルの値を+1ずつ増加させる方法
EXCEL2002でセルの時刻(A1)が15分更新されるのに対応させて、他のセル(B1)の数値を+1ずつ増加させる方法を教えて下さい! 例として, A1に9:00 というNOW関数で表示させた値が、9:15⇒9:30⇒9:45⇒10:00 と変化する度に、 B1の値を「1」を初期値として始まり、 1⇒2⇒3⇒4⇒5 と増加させる方法を教えて下さい!
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
標準モジュールシートに以下のマクロをペースとして、書き込み終了後もう一度開いてみてください。 テスト不十分につき、おかしければ補足に書いてくだされば、明日回答します。 Option Explicit Sub Auto_Open() Dim wkMIN As Integer, TargetTime, WaitTime, wktime wktime = Now wkMIN = Minute(wktime) wkMIN = Application.Floor(wkMIN + 15, 15) TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") WaitTime = TimeValue("00:00:10") Range("B1") = 1 Range("C1") = TargetTime Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub Macro1() Dim wkMIN As Integer, TargetTime, WaitTime, wktime Dim a As String wktime = Now wkMIN = Minute(wktime) wkMIN = Application.Floor(wkMIN + 15, 15) TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") + _ TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") WaitTime = TimeValue("00:00:10") Calculate With Worksheets(1) .Cells(1, 3) = TargetTime If .Range("B1") + 1 > 5 Then .Range("B1") = 1 Else .Range("B1") = .Range("B1") + 1 End If End With Application.OnTime TargetTime, "Macro1", WaitTime End Sub Sub auto_close() Dim i As Integer, TargetTime, wktime On Error Resume Next wktime = Now For i = 0 To 16 TargetTime = TimeValue(Application.Text(wktime, "hh:") _ & Application.Text(i, "00") & ":00") Application.OnTime TargetTime, "Macro1", , False Next i End Sub なおマウスの件、マウス自体が故障している可能性がありますから、別のマウスで試されるのも手です
その他の回答 (3)
- NCU
- ベストアンサー率10% (32/318)
OnTime メソッドを使って、15分ごとに 1.Calculateする 2.セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む。(多分Microsoftの推奨は前者) 3.次回(15分後)のOnTime設定をする。 4.閉じるときはOnTime設定を解除する。 それだけです。 ヘルプを見て、必要な機能のみをシンプルに書く事をお勧めします。
お礼
いち早い回答、有難うございます。 自分でも、これまでの期間、質問のポイントを絞り込む為、試すがめつ、思考錯誤していましたところ、ついに、週末を迎えてしまいました。 その為、”論点を、更に絞った、精確な質問”を、次の新しい質問で、詳細に、行いたいと思います。 是非、皆さん、お答え頂けると、たいへん有難いです。 こちらの質問を、まだ、御覧下さっていて、『質問を締め切った』と、思われてしまうことは、本意ではありません。 それは、たいへん困りますので、『次の新しい質問』へ、”内容は変わらす、移行したこと”を、皆様が、周知して下さった段階で、『質問を締め切らせて頂きます』 ご了承下さい。
- zap35
- ベストアンサー率44% (1383/3079)
過去に同様の質問がありますので、ご参照下さい。
お礼
いち早い回答、有難うございます。 リンクを、細かく読んでいるうちに、いつの間にか時間が‥‥‥‥‥ 私は、現在、技術評論社の、幸い、書店で平積みになっていた本、 自分で選べる パソコン到達点 シリーズ これからはじめる エクセル関数&VBAの本 井上香緒里 著 / A4変形判 / 184ページ が、最新のもので、一番、★”易しく”★書かれていると言う評判を聞いて、一生懸命、学習中の身です。 この★一番”易しい”★★をキーワードに、良書を、ご紹介頂けないでしょうか? 何卒、宜しくお願いします。 ★★それと、緊急の事態で、つかぬことをお聞きしますが、今しがた、マウスが全く反応しなくなり、PCを再起動させました。 これまでも、対策として、何度も、★★マウスのドライバを再インストールし直し、使用を続けている★のですが、PCの状態は、不調なままです。 PCに、たいへんお詳しいようなので、何か良いお知恵を頂きたいのですが。如何でしょうか。
- HiroBlue
- ベストアンサー率22% (22/96)
セルの値を定期的にチェックするとなると、VBAには、タイマーコントロールが無いのですが、以下のURLでVBAで対応策が提示されています。 セルの値を定期的にチェックして・・というよりも、15分毎にカウントアップするという直接的な記述ができますね。
お礼
いち早い回答、有難うございます。 リンクを、細かく読んでいるうちに、いつの間にか時間が‥‥‥‥‥ 私は、現在、技術評論社の、幸い、書店で平積みになっていた本、 自分で選べる パソコン到達点 シリーズ これからはじめる エクセル関数&VBAの本 井上香緒里 著 / A4変形判 / 184ページ が、最新のもので、一番、★”易しく”★書かれていると言う評判を聞いて、一生懸命、学習中の身です。 この★一番”易しい”★★をキーワードに、良書を、ご紹介頂けないでしょうか? 何卒、宜しくお願いします。
お礼
貴方は、なんて、お優しい方なのですか? 見ず知らずの私に対し、これほどの、お骨折りを頂きまして、感謝の言葉に絶えません。 本当に、有難うございます。 どうぞ、これからも、私のような初心者に、”優しい神”のような存在でいて下さい! 今日は、先ほどの本を、ひっくり返し読んで、よ~く勉強させて頂いて、また後ほど、質問させて下さい!
補足
御作り頂いたプログラム、たいへん有難く使用させて頂きました。 せっかく、御作り頂いたプログラムですが、実行しますと、 Excelワークシートを毎回起動させると、デバッグを促すウィンドウ警告が現れ、プログラム中の 「TargetTime, WaitTime, wktime」というタイトル部分、 TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") の部分が、エラー当該箇所だと表示されます。 一体、どのようにしたら良いでしょうか?