Excelマクロにて、タイマーで自動更新は出来るのでしょうか?
Excelマクロの初心者です。
最近関数にて、時間の計算を行うbookを作成しましたが、
下記の様に手動で現時刻欄を更新している状態です。
(これは1カ所ですが、実際には複数箇所を行いたいです。)
Sub 残り時間を更新()
'
Range("C21").Select '現時刻欄を選択
ActiveCell.FormulaR1C1 = "=NOW()" '使用開始時刻欄に現時刻を再設定
Application.CutCopyMode = False
End Sub
これを別のマクロにくっつけて、例えば10分おき位に自動で
更新が出来る様な事は出来ますでしょうか?
理想は、セルに自動更新時間が任意に設定でき、その数字の基で
タイマーが時間が決まり、実行ボタンでタイマー開始、停止ボタン
で実行キャンセルといった、VB上では出来そうな事をExcel上
でも可能でしょうか?
良きアドバイスをいただきたいと思います。
よろしくお願いいたします。
No.4ベストアンサー
- 回答日時:
#1のimogasiさんのご指摘の「初心者が行う域を超えている」というのは、私も同感です。
Excelでも作れますが、APIタイマーは、やむにやまれず、どこかで発表したことがあります。GetTickCount, SetTimer 等を使いますから、調べてくださってもよいです。ただ、正直なところ、実験的というか、かなり微妙というか、安定性が今ひとつのような気がしますね。今でも、お仕事で使う方にとっては中途半端なものを作って申し訳ないと思っています。
イベントの一種ですから、稼働中でも、Excelやマクロは動きます。ファイルを閉じなければよいです。
しかし、以下のように、UserForm で、OnTime と組み合わせたほうがよいと思います。時間表示も可能です。理由は詳しくは知らないのですが、UserForm の中は、独立して動くことが多いです。ただし、UserFormを立ち上げていると邪魔ですから、GetWindowLong, SetWindowLong, で、隠す方法があります。
これに、OnTime を別に設定させればよいです。
>実行ボタンでタイマー開始、停止ボタンで実行キャンセル
これは、ヘルプを参照してください。安定して使用できます。
分からなければ、しばらくの間でしたら、その辺りの返事を含めて書きます。
ただし、UserForm 起動はフラグを立てて、起動しているのを忘れて、ファイルを閉じないような安全装置は付けてください。ハングする可能性があります。
'//UserForm プロパティは、ShowModal False
'//Labelをひとつ用意してください。
Private Sub UserForm_Activate()
Dim currentTime As String
While UserForms.Count > 0
currentTime = Format$(Time(), "h:nn:ss")
If currentTime <> Label1.Caption Then
Label1.Caption = currentTime
End If
DoEvents
Wend
End Sub
Private Sub TimerRefresh()
If UserForms.Count = 0 Then Exit Sub
UserForm1.TimerRefresh
End Sub
ご指摘をありがとうございました。
Excelでは厳しいという事がわかりました。
PCのスペックもかなり悪いですし、ハングしたら
そのまま壊れそうな・・・。
ですので、手動更新等の別の方法で考えたいと思います。
No.3
- 回答日時:
windows APIを使えば可能だと思います。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
と宣言しておき必要なところで
Sleep 1000
で1秒休みます(CPUのの使用権はOSに戻る)
どこにこのコードをどう入れるかは十分検討してください。
アドバイスをありがとうございました。
PC等の能力や負荷の事を想定しておりませんでした。
スペックがかなり悪いので、別の方法で再検討したい
と思います。
No.2
- 回答日時:
インターバルタイマを使うにはプログラムが稼働
していなければなりませんが、プログラム実行中は
Excelの操作はできません。つまり、Excelでも
操作し、かつタイマも使いたいと言うのは不可能
です。「DoEventsを使えば」というのはもの凄く
効率が悪く(何もしなくてもCPU使用率100%のまま)、
かつ事故が起き易い方法なので、とても採用でき
ない方法です。
また、VBAはマルチスレッドに対応していないので、
APIを使っても対応できません。
No.1
- 回答日時:
VBA出出来ると思うが、マクロの初心者が行う域を超えていると思う。
また不安定だと思う。エクセルの起動をしておく問題とか。
こういうのはエクセルVBAの範囲を超えている。なんでもエクセルの誤り・不適当例ではないか。
これ(タイマーなど)を使わないような処理設計を考えるべきです。
やりたいことの(本件との絡みだけで良いが)全貌を文章で書けないか。
それの道具立てを識者に批判してもらっては。
質問があいまいで良くわからないが、発想が質問者の思いつきで、普通とは違う路線になっているようにおもう。
いままで勤怠管理・時間外計算でエクセル関数で処理するパターンと、質問者のニーズはどう違うのか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセル マクロ 指定日の指定時刻にプロシージャを実行 4 2022/04/17 16:44
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/10 09:06
- Visual Basic(VBA) エクセルのマクロについて教えてください。 3 2023/02/22 08:53
- Visual Basic(VBA) ExcelのVBAコードについて教えてください。 1 2023/08/08 15:45
- Visual Basic(VBA) 3つのプロシージャをまとめたら実行時エラー発生で対応不能 6 2022/05/17 01:47
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/08 11:02
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/03/07 14:05
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/03/08 09:08
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
このQ&Aを見た人はこんなQ&Aも見ています
-
10代と話して驚いたこと
先日10代の知り合いと話した際、フロッピーディスクの実物を見たことがない、と言われて驚きました。今後もこういうことが増えてくるのかと思うと不思議な気持ちです。
-
スマホに会話を聞かれているな!?と思ったことありますか?
スマートフォンで検索はしてないのに、友達と話していた製品の広告が直後に出てきたりすることってありませんか? こんな感じでスマホに会話を聞かれているかも!?と思ったエピソードってありますか?
-
【大喜利】看板の文字を埋めてください
旅行先でほぼ消えかけている看板に出会いました。 何を気を付ければいいのか穴埋めをして教えてください。
-
自分の通っていた小学校のあるある
進学したり大人になってから、「あれって自分の小学校だけだったのかな」と思うことありますよね。 逆に「他の小学校ってそんなことするの!?」と思ったり。 そんな「自分の通っていた小学校」のあるあるを教えてください!
-
【選手権お題その2】この漫画の2コマ目を考えてください
サッカーのワンシーンを切り取った1コマ目。果たして2コマ目にはどんな展開になるのか教えてください。
-
エクセルで定期的(30分おき)にマクロを実行させる方法は?
Excel(エクセル)
-
Excel画面の自動更新 Excelファイルを1つのモニターに映しっぱなしにしておいて、その画面をリ
Excel(エクセル)
-
エクセルnow関数自動更新
Excel(エクセル)
-
-
4
「一定の時間間隔で5秒毎にMacro1を実行する」
Excel(エクセル)
-
5
Excel(エクセル) VBA プロシージャーをミリ秒で繰り返し実行する方法
Excel(エクセル)
-
6
ユーザーフォーム上に現在日時と時刻を表示させていますがフォームを実行すると時間が更新されません。それ
Visual Basic(VBA)
-
7
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
8
エクセルVBAにおけるON TIMEメソッドの解除方法について
Visual Basic(VBA)
-
9
ユーザーフォームに今の時間を表示
Access(アクセス)
-
10
ユーザーフォームのラベルに時間を表示させてずっと時間がちゃんと動くような方法はありますか?コード書い
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・「みんな教えて! 選手権!!」開催のお知らせ
- ・漫画をレンタルでお得に読める!
- ・【選手権お題その2】この漫画の2コマ目を考えてください
- ・2024年に成し遂げたこと
- ・3分あったら何をしますか?
- ・何歳が一番楽しかった?
- ・治せない「クセ」を教えてください
- ・【大喜利】看板の文字を埋めてください
- ・【大喜利】【投稿~12/17】 ありそうだけど絶対に無いことわざ
- ・【選手権お題その1】これってもしかして自分だけかもしれないな…と思うあるあるを教えてください
- ・【穴埋めお題】恐竜の新説
- ・我がまちの「給食」自慢を聞かせてっ!
- ・冬の健康法を教えて!
- ・一番好きな「クリスマスソング」は?
- ・集合写真、どこに映る?
- ・自分の通っていた小学校のあるある
- ・フォントについて教えてください!
- ・これが怖いの自分だけ?というものありますか?
- ・スマホに会話を聞かれているな!?と思ったことありますか?
- ・それもChatGPT!?と驚いた使用方法を教えてください
- ・見学に行くとしたら【天国】と【地獄】どっち?
- ・これまでで一番「情けなかったとき」はいつですか?
- ・この人頭いいなと思ったエピソード
- ・あなたの「必」の書き順を教えてください
- ・10代と話して驚いたこと
- ・14歳の自分に衝撃の事実を告げてください
- ・人生最悪の忘れ物
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel マクロでShearePoint先の...
-
Excel_マクロ_現在開いているシ...
-
Excel マクロ VBA プロシー...
-
Excel VBAからAccessマクロを実...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
wordを起動した際に特定のペー...
-
エクセルのマクロでワードの任...
-
特定文字のある行の前に空白行...
-
WORD テキストボックスを全ペ...
-
ExcelVBAでPDFを閉じるソース
-
VBA 実行時エラー 1004 マクロ...
-
Sheet「状況」から、分類の年齢...
-
エクセルのマクロについて教え...
-
VBAにて別ワークブック上の実行...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel・Word リサーチ機能を無...
-
特定のPCだけ動作しないVBAマク...
-
エクセルで特定の列が0表示の場...
-
Excel マクロ VBA プロシー...
-
メッセージボックスのOKボタ...
-
一つのTeratermのマクロで複数...
-
エクセルに張り付けた写真のフ...
-
ExcelのVBA。public変数の値が...
-
Excel マクロでShearePoint先の...
-
TERA TERMを隠す方法
-
ExcelVBAでPDFを閉じるソース
-
Excel VBAからAccessマクロを実...
-
Excel_マクロ_現在開いているシ...
-
マクロ実行時、ユーザーフォー...
-
エクセルで別のセルにあるふり...
-
ソース内の行末に\\
-
特定文字のある行の前に空白行...
-
マクロで空白セルを詰めて別シ...
-
wordを起動した際に特定のペー...
-
【EXCEL VBA】オートシェイプを...
おすすめ情報