人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

Excel VBAについての質問です。
1分毎にエクセル上でマクロを実行しています。
ソースは以下の様なものです。
※主要部分のマクロ自身はコピーペーストを行う程度の軽い物です。
※同一の秒内で2重実行しない様に実際のマクロは少し付け足してあります。

Sub Macro()
'1分毎に実行
ti = Timer
Do
DoEvents
tm = Time - ti
If Int(tm / 60) * 60 = tm Then
'>>マクロ実行<<
End if
Loop
End Sub

1分毎にマクロを実行する事は出来るのですが以下のことについて教えてください。
1)CPU稼働率がほぼ100%になってしまいます。
ほぼ59秒以上は何もしない常態(空ループ)なのでCPU占有率を低減(30%程度)させたいのですが何か良い方法はありませんか?
2)このマクロを実行中は他のエクセルファイルを開く事が出来ません。
仕事上、他にも編集したいファイルがあるので通常通り2重や3重で開くことは出来ないでしょうか。

ちなみにWindowsXP,Excel2003です。

●質問者: spyglass
●カテゴリ:コンピュータ インターネット
✍キーワード:CPU Excel LOOP sub Time
○ 状態 :終了
└ 回答数 : 2/2件

▽最新の回答へ

1 ● Mook
●35ポイント

Loop で待ってはいけません。


onTime を使用するか、単順位 Sleep を使用しましょう。

Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
 
Sub Macro()
 Do
 '>>マクロ実行<<
 Sleep 60 * 1000 '// ミリ秒単位で指定
 Loop
End Sub

OnTime の使用例は下記をご参考ください。

http://www.moug.net/tech/exvba/0130013.htm

◎質問者からの返答

OnTimeという便利なものがあるのですね。

これですと他作業も出来そうです。

有難う御座います。


2 ● F-15X
●35ポイント ベストアンサー

こんな、よさげなのを見つけました。


Tips15: VBAでも出来る [ タイマーコントロール クラスモジュール (Ver 2)]

◎質問者からの返答

なるほど、参考にさせて戴きます。

有難う御座います。

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ