Excel (VBA)

Excel VBAに関するフォーラムです。
  • 掲示板への投稿には会員登録(無料)が必要です。会員登録がまだの方はこちら
  • 掲示板ご利用上のお願い」に反するご記入はご遠慮ください。
  • Q&A掲示板の使い方はこちらをご覧ください
トピックに返信
質問

 
(Windows 10全般 : Excel 2016)
RUNメソッドで一旦止まってしまう件
投稿日時: 18/03/31 23:48:22
投稿者: cdznaka

APPLICATION,RUNで複数のVBAを次々実行するのですが、時々RUNの行で止まってしまうため、やむなく手でF5を押して続行してもらっています。以前EXCEL2003のときはなかったのですが、bWaitOnReturnをTRUEにすればよいのでしょうか。

回答
投稿日時: 18/04/01 08:35:43
投稿者: WinArrow
投稿者のウェブサイトに移動

>APPLICATION,RUN
と記述すると、ExcelVBAのRUNメソッドになりますが、
>bWaitOnReturn
という引数はないと思います。
VBSのRUNをつかったらいかがでしょう
参考URL
https://msdn.microsoft.com/ja-jp/library/cc364421.aspx

投稿日時: 18/04/01 11:04:16
投稿者: cdznaka

さっそく回答をいただきありがとうございます。
bWaitOnReturn はVBSの引数ですね。失礼しました。
VBAでこのような状態になったので、VBSにして使用しているものもあるのですが、VBAのほうが自由度が高く誰にでも使ってもらいやすいのでVBAで実現できればと思っています。
一旦止まってからF5で実行できるのでその辺りにヒントがあるのではと思ったりするのですが、いかがでしょうか。

回答
投稿日時: 18/04/01 11:26:58
投稿者: simple

こんにちは。
もう少し説明をお願いします。
 
Application.Runを使っている理由はどんなことでしょう。
実行させているマクロは、どのような種類の作業をさせているのでしょう、
という質問と同じ事ですが。
 
また、「止まってしまう」というのはどういう状態なんでしょう。
VBEでどこかの行が黄色くなったままとまるのでしょうか?
なにをもって「止まっている」と判断されましたか?
時間を要する処理(例えばイベントプロシージャが動作しているとか)で、
マクロが処理中ということではないのですか?
 
止まる地点はどのようなところですか?特徴はありませんか?

投稿日時: 18/04/01 21:32:15
投稿者: cdznaka

例えば毎週個人別に成約した成約額や契約件数を集計してニュースを発行するのですが、担当している社員毎にデータを取得するサーバーも違ったり、集計キー、イレギュラー対応も違ったりするのですが、それぞれ複数のVBAで集計や既存ファイルの更新作業の順番に違いがあります。この作業を簡単にするため、パスとプロシージャや引数をEXCELシートに指定したVBA(@)で、次々実行しています。
 
止まるというのは、この@のVBAで、VBEが表示されステップインと同じようにAPPLICATION.RUNの行が黄色で表示される。10秒程度この状態なので動いていないと判断しています。サーバーからデータを取得するところはVBSで行っおり、VBAと同じドライブ保存したデータを読み込んで処理を行っていますので、なにかを待ってこの状態になっているとは思われません。
 
不勉強でVBAがどのように資源を使用しているかわからないのですが、一旦止まってF5で続行できるので、実際にメモリが解放されるタイミングとコーディングでずれがあるためなどでは無いでしょうか。前のVBAをCLOSEしてから次のVBAをRUNしているのですが、WAITなどは入れていません。
 

回答
投稿日時: 18/04/01 22:14:15
投稿者: K.Hiwasa
投稿者のウェブサイトに移動

こんばんは。
 
違う現象かもしれませんが、参考になれば。
私もたまに起こるのですが、意図しないコード中断が起こることがあります。
よくあるのはユーザフォームのshowの前で起こります。
 
以下は推測ですが。
Ctrl+Breakでマクロを中断したときに、中断ダイアログが出ている状態で、
Ctrl+Breakを押すと、自動中断モード(意図しない中断が起こるモード)になり、
再度Ctrl+Breakを押すと、通常モードに戻ります。
Ctrl+Breakでの通常の中断をしようとしたときに、Ctrl+Breakを連打していると
起こりやすいのかもしれません。
 
上記だとすると、中断が起きたときに、継続する前にCtrl+Breakを押してから、
継続すると直るかもしれません。
 
お試しください。

トピックに返信