
6時間くらい動作するEXCEL2000のマクロ作ったのですが、間違えて重複起動をしてしまうことがあります。
次のような対応策を考えてみたのですが、マクロの作り方がわかりません。
(1)マクロの起動時に、マクロ内で現在動作しているマクロと重複チェックを行い、現在動作しているマクロを終了し、新たにマクロを開始する方法
(2)マクロの起動時に、マクロ内で現在動作しているマクロと重複チェックを行い、エラーメッセージを出力する方法
(3)現在稼動しているマクロを表示確認できる方法
他の方法でも結構ですので、マクロをご教示ください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
こんにちは。
(2)の方法ですが、1. プライベート変数myFlagを宣言
2. マクロの実行時に myFlag の値を調べる
2-1. False なら myFlagにTrueをセットし、以降のマクロを実行する
2-2. True ならマクロ実行中なので、処理中止
3. 一応、全ての処理の最後に、 myFlag = True としておく
のような処理になるかと思います。具体的には、
Private myFlag As Boolean
Sub TEST()
If myFlag Then
MsgBox "既に実行中です..."
Exit Sub
End If
'myFlag=Falseなら以降を実行
myFlag = True
'(略)これ以降に処理を書く
'処理の最後に一応
myFlag = False
End Sub
こんな感じでしょうか。
あとは、6時間も稼動しているわけですから、プログレスバーでもなんでもよいので進捗状況を表示した方がよいでしょうね。
はずしていたら、すみません。
この回答への補足
すみません。今、気が付いたのですが、Aplication.OnTimeは、その処理が完了しなくても、次の処理に進むんですね。
実は、マクロAから別のマクロBを、10分おきに、36回 Application.OnTimeで起動していたので、マクロA自体は終了済みで、一瞬にmyFlag = Falseになっていました。
Application.OnTime TimeValue("09:00:00"), "マクロ"
Application.OnTime TimeValue("09:10:00"), "マクロ"
・
・
・
Application.OnTime TimeValue("15:00:00"), "マクロ"
説明不足で申し訳ありません
No.3
- 回答日時:
まだまだ色んなパターンが想定されます。
例えばファイル”あ”の中にマクロAとマクロBが存在し、ファイル”あ”を誤って二重起動してしまった場合やetc...どのパターンでも確実なのは、ある決められたフォルダー(c:\tempなど)にマクロAが起動しているというファイル(なんでもよい)を作成し全て完了したらそのファイルを削除する。
No.2
- 回答日時:
重複起動をしては困る理由を補足説明お願い致します。
それにより対処方法が異なります
この回答への補足
マクロAから別のマクロBを、9時から15時まで10分おきに、36回 Application.OnTimeで起動しています。
Application.OnTime TimeValue("09:00:00"), "マクロB"
Application.OnTime TimeValue("09:10:00"), "マクロB"
・
・
・
Application.OnTime TimeValue("15:00:00"), "マクロB"
8時にマクロAを起動し、誤って10時にマクロAを起動した場合、10時以降はマクロBが2回動いてしまうのを防ぎたいと思っています。
よろしくお願いします。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBAで二重起動を防止したいのですが、
その他(Microsoft Office)
-
VBAでエクセルシートを更新(リフレッシュ)する方法を教えて下さい。
Excel(エクセル)
-
タイマーマクロの二重起動防止をしたい
Visual Basic(VBA)
-
-
4
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
5
エクセルの二重起動をやめたい
Visual Basic(VBA)
-
6
フォームの二重起動の阻止
Visual Basic(VBA)
-
7
Access の VBA 実行中に他の操作をさせたくない
Visual Basic(VBA)
-
8
Excel VBAで「プログラム実行」ボタンと「プログラム停止」ボタンをつけたい
Excel(エクセル)
-
9
VBAにてメッセージボックスを最前面に表示させる
その他(プログラミング・Web制作)
-
10
Excelマクロで、稼働中のマクロを確認する方法
その他(Microsoft Office)
-
11
Excelのマクロボタンをダブルクリックされて困っています
Visual Basic(VBA)
-
12
ユーザーフォームをホイールでスクロールする方法(Excel2000VBA)
Excel(エクセル)
-
13
エクセルVBAのフォームを最前面にする方法を教えてください。
Visual Basic(VBA)
-
14
VBA シートの切り替えができないようにするには
PowerPoint(パワーポイント)
-
15
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
16
ExcelVBAにてアプリをタスクマネージャーから強制終了させたいのですが
Visual Basic(VBA)
-
17
メッセージボックスを前面に表示させるには?
Visual Basic(VBA)
-
18
Excel2013 VBA マクロ実行中に別ブックを編集すると、マクロがフリーズ
Visual Basic(VBA)
-
19
callで順に実行されるプロシージャを途中で止める方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
一つのTeratermのマクロで複数...
-
メッセージボックスのOKボタ...
-
Excel_マクロ_現在開いているシ...
-
Excel・Word リサーチ機能を無...
-
TERA TERMを隠す方法
-
ExcelのVBA。public変数の値が...
-
エクセルで縦に並んだデータを...
-
マクロ実行時、ユーザーフォー...
-
Excel マクロでShearePoint先の...
-
特定文字のある行の前に空白行...
-
WORD テキストボックスを全ペ...
-
Excel マクロ VBA プロシー...
-
Excel VBAからAccessマクロを実...
-
マクロの連続印刷が突然不可能...
-
ExcelVBAでPDFを閉じるソース
-
Excel 改ページのVBAうまくい...
-
VBA アドインについて お詳しい...
-
wordを起動した際に特定のペー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルで特定の列が0表示の場...
-
特定のPCだけ動作しないVBAマク...
-
メッセージボックスのOKボタ...
-
Excel_マクロ_現在開いているシ...
-
一つのTeratermのマクロで複数...
-
マクロの連続印刷が突然不可能...
-
ExcelのVBA。public変数の値が...
-
Excel マクロ VBA プロシー...
-
Excel・Word リサーチ機能を無...
-
エクセルに張り付けた写真のフ...
-
Excelのセル値に基づいて図形の...
-
TERA TERMを隠す方法
-
マクロ実行時エラー
-
ExcelVBAでPDFを閉じるソース
-
wordを起動した際に特定のペー...
-
特定文字のある行の前に空白行...
-
Excel マクロでShearePoint先の...
-
エクセルで縦に並んだデータを...
-
マクロ実行時、ユーザーフォー...
-
ソース内の行末に\\
おすすめ情報