- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excel VBA Do~Loop時のドラッグ操作)
Excel VBAでセルのドラッグ操作時に発生するエラーの回避方法
このQ&Aのポイント
- Excel VBAを使用してセルのドラッグ操作を行う際に、Excel.EXEアプリケーションエラーが発生する問題があります。このエラーを回避する方法を教えてください。
- Excel VBAでのセルのドラッグ操作時にExcel.EXEアプリケーションエラーが発生してしまいます。このエラーを回避する方法を教えてください。
- Excel VBAでセルのドラッグ操作を行うとExcel.EXEアプリケーションエラーが発生します。このエラーを回避する方法を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
Worksheet_Activate()で監視をCallしているのでループしているので処理が終了する前に次のイベントが多数発生してメモリを食い尽くしています。 イベントの処理が完結するまで(ユーザーの処理+Windwsの処理)同タスクからのイベントはDoEventsでは取れずキューイングしたままになるはずです。 Worksheet_Activate()では監視をCallせずFlgの変更のみとして、監視そのものはタイマなどを使用して別に行うべきです。
その他の回答 (1)
- webnas
- ベストアンサー率30% (3/10)
回答No.1
Sub 監視() Debug.Print "■監視開始" Do While Flg DoEvents 'ここに監視用の処理を実装予定 Loop Debug.Print "■監視終了" End Sub ループ分の中でメモリがいっぱいになっちゃってますので ループ分内にOSに処理を返す、DoEvents を入れてみたらどうでしょうか?
質問者
補足
さっそくありがとうございます。 ご指摘の通り、DoEvents、確かに入れていました。 ※監視処理のベースは下記のURLのものを使う想定です。 http://www.keep-on.com/excelyou/1999lng4/199909/99090194.txt
お礼
ありがとうございました!以下のような実装でうまく行きそうです。 '以下、ワークシート内に記述 Private Sub Worksheet_Activate() Flg = True Call 監視2 End Sub Private Sub Worksheet_Change(ByVal Target As Range) Debug.Print "■更新" End Sub Private Sub Worksheet_Deactivate() Flg = False Debug.Print "===監視終了" End Sub Private Sub Worksheet_SelectionChange(ByVal Target As Range) Debug.Print "□選択範囲変更" End Sub '以下、標準モジュールに記述 Public Flg As Boolean Sub 監視タイマーセット() If Flg Then Debug.Print "★待機中" Application.OnTime Now + TimeValue("0:0:1"), "監視2" End If End Sub Sub 監視2() On Error GoTo Err_Trap: 'ここに監視処理を記載 Debug.Print "===監視処理中===" Call 監視タイマーセット Err_Trap: End Sub