vba処理中に「保存」をしたり既に開いているBookを閉じると、vba処理がとまっていることがある。
特にエラー表示もないので、「いつの間にか止まってる…」って感じでどうにか回避したい。
ということで、vba処理中に他の操作を受け付けないような方法を調べた。
■フォームコントロールの場合
①ユーザーフォーム作成
ユーザーフォーム
'sleepのAPI使う為に記述
Private Declare PtrSafe Sub Sleep Lib "kernel32" (ByVal ms As LongPtr)
'ユーザーフォームがshowで呼ばれて表示されたときに呼ばれる
Private Sub UserForm_Activate()
'ユーザーフォームを表示させるお作法
Me.Repaint
'時間のかかる処理を記述
'※sleepで無理やり時間のかかる処理を記述
Dim count As Integer
count = 0
Do While count < 10
'ユーザーフォームに秒数表示
Processing.timeLabel.Caption = count & "秒"
'時間かかるときのお作法
DoEvents
'強制1秒待機
Sleep 1000
'カウントアップ
count = count + 1
Loop
'ユーザーフォームを消す
Unload Me
End Sub
②①で作成したユーザーフォーム表示用のプロシージャ作成
ユーザーフォーム表示プロシージャ作成
'標準モジュールに下記プロシージャを記述する。
Public Sub process()
Processing.Show
End Sub
③上記プロシージャを呼び出すボタンを作成 
④③で作成したボタンを押下すると、10秒間ユーザーフォームが表示され、その間他の操作はできない。 
■ActiveXコントロールの場合
①ActiveXコントロールのボタンを作成する。
③clickイベントでユーザーフォームを表示する処理を記述。