• 締切済み

VBAでの一時停止と再開の方法

実行中のエクセルVBAを好きなところで止めて、そこから再度開始する方法はありませんか。 ポーズボタンのようなものを作りたいのですが、上手くできません。 どなたかご教授願えませんか。宜しくお願いします。

みんなの回答

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.4

実行そのものを一時停止にはできないけど、代用になる方法を提案します。 1.グローバル変数でフラグを用意。 2.モーダレスフォームでダイアログを表示させて、そのダイアログに停止や再開ボタンなどを配置。 3.ダイアログのボタンのクリックでフラグがON/OFFするようにコードを記述 4.メイン処理ではループ内や要所で、このフラグをチェックし、一時停止ならループさせてフラグが再開になるまで待機させる。 5.待機のループ内には他のタスクに処理が回るようにDoEventsを実行すれば良いでしょう。 フラグのチェックと待機ループを組み込んだ部分でしか一時停止できないけど、 これでかなり代用になるのではと思いますが。

univ1398
質問者

お礼

ありがとうございます。随時できないと困るので、むずかしいかもしれません。

  • yama1718
  • ベストアンサー率41% (670/1618)
回答No.3

普通はmsgboxでメッセージを表示させて「OK」を押すまで待たせる方法を使いますね。

参考URL:
http://conex.fujigoma.com/?target=http://conex.fujigoma.com/dosv/dosv_soft_vb_tips2.htm
univ1398
質問者

お礼

ありがとうございます。 固定のポイントでの停止と言うことですので、希望の随時止める機能とは少し異なってしまいます。 回答感謝します。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.2

Ctrl + Pause で一時停止します。F5で再開です。但し、画面は VBAのソース画面になります。ここはプログラマ用の画面なので、 任意のフォーム等で制御できるところではありません。

univ1398
質問者

お礼

ありがとうございます。 そうですね。これしかないですかね。

  • hana-hana3
  • ベストアンサー率31% (4940/15541)
回答No.1

>ポーズボタンのようなものを作りたいのですが、上手くできません。 そのような機能はありませし、どうやっても作る事は出来ません。 中断させたい箇所があれば、コードの任意の所にブレークポイントを設定するとか Stop と書いて下さい。

univ1398
質問者

お礼

ありがとうございました。助かりました。

関連するQ&A

  • VBAの一時停止

    エクセルのVBA の実行中に途中で一定時間(例えば10秒とか) 一時停止して その後再開するようなことが出来ますか またそのコマンドは何を使えばいいでしょうか 宜しくお願いします。

  • EXCEL VBAをWEB上で実行した場合の終了方法

    EXCEL VBAをWEB上で実行し終了する(EXCELを表示しているブラウザを閉じる)方法はありますか? ローカルでEXCELを直接実行した場合は、以下の方法で出来るのですが、Web上では動作しません。 Application.DisplayAlerts = False Application.Quit また、×ボタンでブラウザを閉じようとすると「変更を保存しますか・・・」の確認ウィンドウが表示されてしまいます。 内容を参照させるだけなので、終了ボタンを押したら、変更を保存せずに終了したいのですが、ご存知の方いらっしゃいましたらご教授お願いします。

  • 処理の途中で停止させ、再開させたいです(VBA)

    お世話になります。 フォームのコマンドボタンを押すと、処理が始まるVBAを作成しております。 If DCount("*", "T_データ1") > 0 Then MsgBox ("!データ1が存在します!" & Chr(13) & _ "!データ1一覧を表示します!") DoCmd.OpenForm "F_データ1レコード" ● '住所データを振り分ける Call zyushoCheck テーブルにレコードが存在して、フォームが開いた後(●印のところ)、30秒くらい 次の処理まで時間を置き、時間が経過したら、 Call zyushoCheckを開始させる方法を教えてください。 TimeInterval?でできますでしょうか? どうぞよろしくお願いいたします。

  • エクセルVBAの質問です。

    こんばんわ! エクセルVBAのユーザーフォーム上のテキストボックス等をマクロを実行した状態で、動かしたりしたいのですが、可能でしょうか? 具体的には、コマンドボタン1をクリックすると、テキストボックス等を移動したりできるようにしたいです。 参考URL、あるいは方法があればご教授お願いいたします。

  • javaからVBAを実行する方法を教えてください。

    javaからVBAを実行する方法を教えてください。 POIを使っています。 VBAの実行方法がWEBを探しても見つかりません。 エクセルファイルを閉じたまま行いたいです。 ご存知の方がおられましたら教えてください。 よろしくお願いいたします。

    • ベストアンサー
    • Java
  • VBA 停止したら配列は開放されていますか?

     質問させていただきます。よろしくお願いいたします。 環境:Windows7 + エクセル2010 でございます。 少し気になりましたのでご質問させてください。  50MBほどのエクセルファイルでデータを加工するために、大きな配列を下記のように繰り返し使用する事がよくございます。 Do  ReDim varData(1000000, 10)   :   : ★  Erase varData Loop Until ~  Erase前(例えば★マークのところ)でエラーやブレークによる中断 →そのままVBAを「停止」(=四角いリセットボタンの事です) →デバッグしてからVBA再実行 を何度も繰り返しておりますが、「停止」させた時点でこの配列のメモリは開放されているのでしょうか?  といいますのが、何度もVBA実行→中断を繰り返しておりますとエクセルの動作が重くなってくる事があるので、上記の問題を疑ってエクセルを一度落として再起動することが時々あります。 (再起動すればメモリが残っていても開放されると思いますので。 しかしエクセルファイル自体が重いので、何が原因なのかは不明です。)  毎回きちんとEraseできればメモリは開放されると思うのですが。。。  あともしメモリ上に残っているのであればですが、VBA起動直後にそれを確認してEraseするようなコードがもしございましたらお教えいただけないでしょうか。 試しに Sub Test  If varData<> Empty Then Erase varData のような事をしてみましたが、 >実行時エラー13:型が一致しません のエラーが出てうまくいきませんでした。  もしお詳しい方がいらっしゃいましたら、どうぞよろしくお願いいたします。

  • Excel VBAで「プログラム実行」ボタンと「プログラム停止」ボタンをつけたい

    ExcelでVBAを使いアプリをつくっています。 プログラムを実行させるボタンはもちろんつくれるのですが、 プログラムを停止させるボタンをつくるにはどうしたら良いのかと悩んでいます。 ボタンに登録できるのはひとつのプロシージャですよね。 とすると「他のプロシージャを止める」プロシージャをつくらねばならないのでしょうか。とするとどうやって・・・?

  • VBAでメール送信(CDO)

    お世話になります ExcelのVBAでCDOを使用してメールの送信を行おうとしております Excelファイルを配り、Excel内のアンケートに答えていただいた 後にVBAで作成したメール送信ボタンを実行すると、指定先にメール を送るということを考えております ただ、ソース内でSMTP情報と相手のメールアドレスの設定をしないと いけないのですが、この2点をどのようにVBAを使用して設定すれば良いの かが分かりません。そもそも出来るのかもわからないのですが ご存知の方可能なのであれば取得方法をご教授頂きたいと思います

  • エクセルVBAの一時停止後、 入力し再実行したい

    エクセルVBAでオートフィルター実行後に一時停止し、オートフィルターで選んだエクセルシート上のセルに直接入力た後、マクロを再実行させたい。 Sub Macro1() ' ' Macro1 Macro ' マクロ記録日 : 2008/3/2 '製品コードより枠番を選ぶ Selection.AutoFilter Field:=12, Criteria1:="=?????1*", Operator:=xlAnd 'ここで一時停止し、エクセルシート上で入力した後、次の行を実行したい Selection.AutoFilter Field:=12, Criteria1:="=?????2*", Operator:=xlAnd 'ここで一時停止し、エクセルシート上で入力した後、次の行を実行したい Range("A1").Select End Sub

  • エクセルのVBAについて

    エクセルのVBAについて教えて下さい。 エクセルのVBAでプログラムを組んでいるのですが、一つわからないことがあるのです。 マクロが実行(オープン)されるファイル名(ファイルパス)をVBAで取得するためにはどうすればいいでしょうか? たとえば、マクロが実行されるファイルがC:\テスト.xlsならば "C:\テスト.xls"を取得したいと考えています。 どなたかご教授お願い致します。 宜しくお願い致します。

専門家に質問してみよう