• ベストアンサー

EXCEL マクロ処理中に、他のマクロを起動(フォームボタンをクリック)できないようにする方法

エクセルで、アクセスから外部データ取り込み処理を行なう動作を、 フォームで作成したボタンで行っています。 その動作の最中に、他のマクロを登録したフォームボタンを押すと、 最初に押したボタンの動作が中断され、最後に押した方のマクロが動作し、 その動作が完了してから、1個目のボタンの動作が途中から開始されるようなんです。 最初の動作で最新データに置き換える動作をして、次の動作でアウトプットするようにしているので、 途中で動作されると困ってしまうので、対処方法を教えて下さい。 譲り受けたファイルなので、理解不足のまま質問してすみません。 対応として、以下のような画面固定というマクロが入っていますが、 それでは有効ではないようです・・・。 Application.ScreenUpdating = False Application.ScreenUpdating = True

質問者が選んだベストアンサー

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.2

こんにちは。 通常、ひとつのマクロが占有して作動中の間は、他のマクロは起動することがないはずです。おそらく、そのマクロ実行が完全に遂行されていないかもしれません。 もちろん、完了前には起動しないように、モジュールレベルのフラグを置いておく方法もあります。 Private ExFlg As Boolean Sub Macro1 ExFlg = False '実行 ExFlg =True End Sub Sub Macro2 If ExeFlg =False Then Exit Sub End Sub --------------------------- 以下のように、Interactive プロパティを使ってみる方法もあります。ただ、そのマクロがある程度の信頼性がないといけませんから、その場合は、On Error Goto ErrorHandler で、Interactive プロパティをTrue に解除できるように、したら良いかと思います。 Application.Interactive = False Application.DisplayAlerts = False Application.DisplayAlerts = True Application.Interactive = True

tsucchie
質問者

お礼

私の力量(理解)不足で、最初、 どう試しても変化なかったので迷っていましたが、 何とかやりくりして、Wendy02さんの方法で対処出来ました。 助かりました。どうもありがとうございます。

その他の回答 (1)

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

簡単な方法としては、 処理Aスタート時に任意のセル(例A1)に1を設定する。 処理A終了時に、そのセルをブランクにする。 処理Bでは、A1がブランク以外だったら、処理をしない というような処理を組み込めばいいのでは?

tsucchie
質問者

お礼

条件を加えるやり方ですね。 そういう方法は思いつきませんでした・・・。 早速、やってみて動作を確認します。 早い回答に感謝します。

関連するQ&A