• ベストアンサー

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 と増加させる方法を教えて下さい!

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

  • ベストアンサー
  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.3

標準モジュールシートに以下のマクロをペースとして、書き込み終了後もう一度開いてみてください。 テスト不十分につき、おかしければ補足に書いてくだされば、明日回答します。 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 なおマウスの件、マウス自体が故障している可能性がありますから、別のマウスで試されるのも手です

TRADKING
質問者

お礼

 貴方は、なんて、お優しい方なのですか?  見ず知らずの私に対し、これほどの、お骨折りを頂きまして、感謝の言葉に絶えません。  本当に、有難うございます。   どうぞ、これからも、私のような初心者に、”優しい神”のような存在でいて下さい!  今日は、先ほどの本を、ひっくり返し読んで、よ~く勉強させて頂いて、また後ほど、質問させて下さい!

TRADKING
質問者

補足

 御作り頂いたプログラム、たいへん有難く使用させて頂きました。 せっかく、御作り頂いたプログラムですが、実行しますと、 Excelワークシートを毎回起動させると、デバッグを促すウィンドウ警告が現れ、プログラム中の 「TargetTime, WaitTime, wktime」というタイトル部分、 TargetTime = TimeValue(Application.Text(wktime, "hh") & ":00:00") _ + TimeValue("00:" & Application.Text(wkMIN, "00") & ":00") の部分が、エラー当該箇所だと表示されます。  一体、どのようにしたら良いでしょうか?

その他の回答 (3)

  • NCU
  • ベストアンサー率10% (32/318)
回答No.4

OnTime メソッドを使って、15分ごとに 1.Calculateする 2.セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む。(多分Microsoftの推奨は前者) 3.次回(15分後)のOnTime設定をする。 4.閉じるときはOnTime設定を解除する。 それだけです。 ヘルプを見て、必要な機能のみをシンプルに書く事をお勧めします。

TRADKING
質問者

お礼

いち早い回答、有難うございます。 自分でも、これまでの期間、質問のポイントを絞り込む為、試すがめつ、思考錯誤していましたところ、ついに、週末を迎えてしまいました。  その為、”論点を、更に絞った、精確な質問”を、次の新しい質問で、詳細に、行いたいと思います。  是非、皆さん、お答え頂けると、たいへん有難いです。  こちらの質問を、まだ、御覧下さっていて、『質問を締め切った』と、思われてしまうことは、本意ではありません。  それは、たいへん困りますので、『次の新しい質問』へ、”内容は変わらす、移行したこと”を、皆様が、周知して下さった段階で、『質問を締め切らせて頂きます』  ご了承下さい。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.2

過去に同様の質問がありますので、ご参照下さい。

参考URL:
http://oshiete1.goo.ne.jp/kotaeru.php3?q=2218976
TRADKING
質問者

お礼

 いち早い回答、有難うございます。  リンクを、細かく読んでいるうちに、いつの間にか時間が‥‥‥‥‥ 私は、現在、技術評論社の、幸い、書店で平積みになっていた本、 自分で選べる パソコン到達点 シリーズ これからはじめる エクセル関数&VBAの本 井上香緒里 著 / A4変形判 / 184ページ が、最新のもので、一番、★”易しく”★書かれていると言う評判を聞いて、一生懸命、学習中の身です。 この★一番”易しい”★★をキーワードに、良書を、ご紹介頂けないでしょうか?  何卒、宜しくお願いします。  ★★それと、緊急の事態で、つかぬことをお聞きしますが、今しがた、マウスが全く反応しなくなり、PCを再起動させました。  これまでも、対策として、何度も、★★マウスのドライバを再インストールし直し、使用を続けている★のですが、PCの状態は、不調なままです。  PCに、たいへんお詳しいようなので、何か良いお知恵を頂きたいのですが。如何でしょうか。

  • HiroBlue
  • ベストアンサー率22% (22/96)
回答No.1

セルの値を定期的にチェックするとなると、VBAには、タイマーコントロールが無いのですが、以下のURLでVBAで対応策が提示されています。 セルの値を定期的にチェックして・・というよりも、15分毎にカウントアップするという直接的な記述ができますね。

参考URL:
http://www.h3.dion.ne.jp/~sakatsu/Excel_Tips15.htm
TRADKING
質問者

お礼

 いち早い回答、有難うございます。  リンクを、細かく読んでいるうちに、いつの間にか時間が‥‥‥‥‥ 私は、現在、技術評論社の、幸い、書店で平積みになっていた本、 自分で選べる パソコン到達点 シリーズ これからはじめる エクセル関数&VBAの本 井上香緒里 著 / A4変形判 / 184ページ が、最新のもので、一番、★”易しく”★書かれていると言う評判を聞いて、一生懸命、学習中の身です。 この★一番”易しい”★★をキーワードに、良書を、ご紹介頂けないでしょうか?  何卒、宜しくお願いします。

関連するQ&A

  • EXCEL2002で、OnTime メソッドを使い、15分毎にCalculateする方法を選択し、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 と増加させる方法を教えて下さい!  この際、  OnTime メソッドを使って、15分ごとに 1.Calculateする 2.セルB1の値に1を加えるか、別途カウント用の変数に保持した値をセルB1に書き込む。(多分Microsoftの推奨は前者) 3.次回(15分後)のOnTime設定をする。 4.閉じるときはOnTime設定を解除する。  以上の方法で、VBAを組み立てるには、どうしたら良いでしょうか?  何度やっても失敗します。 たいへん、厚かましい質問で申し訳ありません。  実行可能なプログラムの形で教えて頂けないでしょうか?  以前の質問 QNo.2292225の関連質問です。御覧下さい!  参考URL http://www.asahi-net.or.jp/~ZN3Y-NGI/YNxv214.html

  • エクセルの時刻入力(now)関数を自動更新について

    ご質問させてください。 うまく表現できるかわかりませんが、エクセルにお詳しい方、ご教授くださいませ。 NOW関数をセルに入力して、ファイルを次回開くとその時刻となってしまいますが、 自動更新させずに、値としてセルに残す方法はご存じありませんか? ご存じの方いらっしゃいましたら、ご教授くださいませ。         A    B    C    D 1     開始時刻         終了時刻       所要時間       入力品名         ⇓             ⇓               ⇓ 2 『=IF(D2="","",NOW())』  『=IF(A2="","",A2+1/1440)』 『=B2-A2』    3 ・・・・・・以後続く。 という感じで、D2に品物名を入れたら、A列に開始時刻 B列に終了時刻『1分』 C列に所要時間を自動入力し、その開始時刻(A列)を以後反映させないように(次にファイルを開いても数値が変わらない。)ようにするには、どのようにしたらよいでしょうか? エクセルは初心者の域をでませんので、悩んでおります。ぜひ、ご教授くださいませ。 よろしくお願いいたします。 ※ちなみに、エクセル2003です。                                    

  • now関数のセルから別セルに直前の日付を残す方法

    A1せるにnow関数で、ファイルの開いた日付と時刻を表示させています。 A2せるに、常に直前にファイルを開いた日付と時刻を        ^^^^ 残しておきたいんです。 たとえば、 2006/1/1 02:10にファイルを開いたら A1せるには、now関数で2006/1/1 02:10と表示されます。 ファイルを閉じ、次回ファイルを開いた日付が、 2006/1/3 12:30の場合にA1せるはnow関数で2003/1/3 12:30 と表示されます。 この時に、A2せるには、直前の2006/1/1 02:10と表示させたい。 さらにファイルを閉じ、次回ファイルを開いた日付が、 2006/2/1 05:20の場合にA1せるはnow関数で2006/2/1 05:20 と表示されます。 この時に、A2せるには、直前に開いた時刻の2006/1/3 12:30と 表示させたい。 良い方法はあるでしょうか?

  • セルの値を関数として利用する方法

    いつもお世話になります。 セルの値を関数(や数式)として利用する方法をさがしておりますが、そのような方法はありますでしょうか。 具体的には セル B1="1+2" セル A1=B1 とすると、せるA1には 「1+2」 がはいりますが、 これを、 「3」 と表示させたいという事です。 上記例では数式ですが、関数なども利用できればとおもっております。 以上ですが、よろしくお願い致します。

  • 関数が入っている列で値のある最後のセルの値を返す

    お尋ねします。 関数が入っている列で式の値が入っている一番下のセルの値を調べるにはどうしたら良いでしょうか? 例      A列   1   5   2   10   3   13   4   (式の値が無いのでゼロ) B1セルにA3セルの13と言う値を返したいのですが、列に式(SUMPRODUCT関数)が入っていて、実際はA4セルのゼロが返ってきます。 またシート1~シート5 まで上記と同じ式が入っていて、シート1のA列の最後の値「13」をシート6のB1セルに値を返す場合、INDIRECT関数を使った場合、どういう式になるでしょうか? ご回答よろしくお願いします。

  • 関数を使わないでそのセルに出力する方法

    ある計算式が入ったセルがあったとして、その計算された値(見かけ上の数値)をどこか別のセル(空白のセル)に返す方法をご存知でしたら教えてください。 返したいセルには関数すら入れないという方法でやりたいので、マクロを使うしかないと思うのですが、どのようなマクロを作ればよいのか見当が付かないのです(計算されてきた見かけ上の値を参照してどっかに出力する方法などあるのでしょうか)。 例えば↓みたいな感じ   A   B    C       D 1  10  10  =SUM(A1:B1) C1のセルは見かけ「20」となりますが、実際には「=SUM(A1:B1)」となっています。この「20」をD1にそのまま抽出したいと考えています(D1のセルには何も関数を入れないで、見かけ上も実際に入っている数値も「20」としたいのです) 関数だけでは無理ですよね?

  • EXCEL 1分ごとに決まった値を足し続ける方法

    EXCEL2007を使用しています。 1分ごとに事前に決まっている値を足し続ける方法を教えてください。 例えば、A2セルに「3」が入力されているとします。 9時から11時までの間、1分ごとに3を足し続けて計算結果をB2に表示したいのです。 つまり、9時にはB2セルはゼロで、9時1分にはB2セルは3、9時2分にはB2セルは6、9時3分にはB2セルは9,・・・というふうにしたいのです。 そして、11時まで計算したら、今度は、12時半から15時までB2セルの値に3を足し続けたいのです。 どなたか教えていただけないでしょうか? なお、上記の例では3を足し続けることになっていますが、何を足すかはその日によって変わります。 従いまして、A2セルの値を足し続けるようにしたいのです。 よろしくお願いいたします。 なお、私はVBAは初心者レベルです。 もし比較的簡単にワークシート関数だけでできるようでしたら、そちらも教えてください。 よろしくお願いいたします。

  • EXCELのNOW()関数の値の固定する方法は?

    NOW()関数をセルに入力した時に返される日付、 時刻を文字列にそのまま固定する方法を教えてください。

  • EXCEL関数 数値セルが何個下に出てくるか?

    EXCEL関数で質問です。 A1:A5セルそれぞれに、文字列、空白、数値のいずれかが入っています。 そのうち数値のセルが最初に出てくるのは上から何番目か、というのを B1セルに関数で表示したいのです。 たとえば、A列上から、 あ、A、100、100、0 なら3、 愛、(空白)、百、8、ZZZ なら4 という具合です。 お知恵をお貸しください!

  • 関数と関数の値を一つのセルに表示する方法

    二つの関数の値を一つのセルに表示する方法を教えてください。 例えば、=VLOOKUP(A1,A:C,2,FALSE)+"/"+=VLOOKUPVLOOKUP(B1,A:C,3,FALSE) 私の中ではこんなイメージです。 これで、引っ張ってきた値を一つのセルに「○ / ×」みたいに表示したいのですが、誰か知りませんか

専門家に質問してみよう