[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]
『VBAの一時中断→再開』(T19)
お世話になります。
一つのマクロ内で処理を一時中断させ、別作業(シート編集や他アプリの操作)をした後に
マクロを再開させたいと考えています。
作業の流れとしては、以下となります。
マクロ実行→処理1→一時中断→別作業→再開→処理2→一時中断...
以下を検討しましたが、どれも今一な感じです。
1)MsgBoxで「OK」を押すまで待機状態にしておく
2)コード内に「Stop」を入れる
3)「Application.Wait」や「Sleep関数」を使う
今一な理由は、
1)は、この状態のままでは別作業ができません。
2)は、ブレークポイントと同じでVBE画面からの続行になり億劫です。
3)は、時間指定が必要で悩ましい。
できれば、エクセルからのボタン操作かデスクトップからのキー操作でマクロを再開できれば、と考えています。
ご助言をお願いします。
< 使用 Excel:Excel2010、使用 OS:Windows10 >
複数のマクロは今はそれぞれ別ブックにあるのですが、都度そのブックを開いてマクロを実行しています。
共通するのは、ほとんどのケースでエクセル以外のアプリとデータのやりとりを「手動」ですることです。
(この部分が上述の「別作業」になります)
未だ構想が固まっているわけではないですが、各ブックを開く操作を一つのマクロに組み込んでマクロを
実行すれば作業効率が上がるのでは、というのが動機です。
方向性がマチガっていますかね..
(T19) 2019/02/22(金) 17:25
>マクロを中断してから作業、というのは良くない・・ >統括ブックに書き込む・・
を、参考にして再考したいと思います。
ありがとうございました。
(T19) 2019/02/23(土) 06:59
「統括ブック」を一つ作り、
別作業(反映させたい数値の調査・反映)
↓
〜〜〜〜マクロで自動化出来る範囲〜〜〜〜
1.「統括ブック」から「作業ブック」へ数値の反映をする処理
2.「作業ブック」内の既存のマクロを実行させる処理
3.戻り値を「統括ブック」に記載する処理
4.開いた「作業ブック」を閉じる処理
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
↓
別作業(他アプリへ数値の反映)
上記を一連の作業として一つマクロを作成してしまえばそれで事足りるのではないかと思う
どんな構成が良いかは現状のファイル管理状況によって異なると思われるので、
ご参考までに
(名無) 2019/02/23(土) 09:40
統括ブックと作業ブック間のやり取りのコードを汎用化させれば、
他の作業ブックにも適用できそう..ですが今は思いつきません。
躓いたときはよろしくお願いします…
(T19) 2019/02/24(日) 08:49
参考;http://officetanaka.net/excel/vba/tips/tips23.htm
(T19) 2019/02/26(火) 15:10
先の方法は無限ループで、ユーザーの操作を監視することで、一定の条件が整った時にVBAを実行する仕組みです。
ずっとVBAが回り続ける事になりますから、ユーザーが想定外の操作を行うことで起こりうる事象が予測できません。片っ端からエラーの原因となりそうな対処コードを書いていたらキリがないくらいです。
また条件を満たした時を自動で検知するのが非常に難しいのではないでしょうか。誤作動する可能性もありますよね。
少しでも怖いと感じるならう止めておきましょう。
>マクロ実行→処理1→一時中断→別作業→再開→処理2→一時中断...
きっと複数のウィンドウをまたぐので、マクロ実行のボタンの配置したシートが背面に行ってしまうため、続行方法に困っているのではないかとエスパーします。
対処法はいくらでもあります。
例えば最初のマクロを実行した時点でユーザーフォームを表示しておき、進捗に合わせてフォームにマクロ実行ボタンが追加(Visible=True)されていくなんて如何でしょう?
フォームなら少々邪魔ですが背面に送られてしまう心配はありません。
あとはリボンに追加するとか、コンテキストメニューに追加するとか、Windows.Addで窓を分割するとか、ショートカットキーに登録して続行するときはそのキーを押して貰うとかが思いつきます。
(ななし) 2019/02/26(火) 16:03
ユーザーフォームを学習してみようと思います。
簡単ではなさそうですが(私には)..
これからもよろしくお願いします…
(T19) 2019/02/26(火) 17:19
[ 一覧(最新更新順) ]
YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki.
Modified by kazu.