• ベストアンサー

Excel 2003 VBAにてマクロの実行中にESCキーにて中断されないようにしたい

end-uの回答

  • end-u
  • ベストアンサー率79% (496/625)
回答No.3

解決でなによりです。 >GotFocusに処理が留まり続けることで、Application.EnableCancelKey = xlDisabled が有効となり続けるという解釈でよいでしょうか。 概ねその通りです。 TextBox1がFocusを得たとき、TextBox1_GotFocusイベントが実行されます。 このイベントプロシージャが終了するまで EnableCancelKey = xlDisabled です。 Do   Sleep 1   DoEvents Loop Until flg Loop終了条件 flg = True ...つまり LostFocusイベントが発生するまで このLoopが回り続けますから、ずっとEnableCancelKey = xlDisabled です。 Loopの中でDoEvents関数で他プロシージャが実行できるようにしてありますので xlDisabled状態でKeyDownイベントが発生する事になります。 #ちなみに Sleep 1 はCPU使用率100%を回避する為。

Harusir
質問者

お礼

ご丁寧にご教示頂きましてありがとうございます。 おかげさまで理解できました。 なるほど私が勘違いしていました。 まだまだ勉強が必要な様です。 どうもありがとうございました。

関連するQ&A

  • フォルダ参照ダイアログAPIをVBAに組み込んだときのESCキー押下

    フォルダ参照ダイアログAPIをVBAに組み込み、フォルダ選択画面が表示されたとき、ダイアログ上の「OK」「キャンセル」以外に、キーボードの「ESC」キーを押下すると、VBAの「コードの実行を中止」ダイアログが表示されプログラムの実行が中断します。「ESC」キーを押下しても「キャンセル」と同等の処理で、「コードの実行を中止」ダイアログを表示しないようにできるでしょうか。お知恵をお貸しください。

  • EXCEL マクロ実行速度が大きく変化する現象について

    EXCEL2003で他人のつくったマクロなのですが、普通に実行すると非常に遅いのですが、 1.実行中にESCキーを押して一旦中断 2.ダイアログボックスの継続ボタンで実行を再開 3.再びESCキーを押す という操作をすると、3によりマクロが中断されることはなく、実行の速度が当初の10倍くらい早くなります。 さらにもう一度ESCキーを押すとマクロは中断されます。 マクロは初心者でコードの内容もほとんど理解できず、また、仕事上のものなのでコードを記載することもできないのですが、このような現象について何かご存知の方、当初から早いスピードでマクロを実行する方法についてご存知の方がいらっしゃいましたらお教えいただけませんでしょうか。 なお、マクロで行っているのは特定の表から別の表を作り出すという作業です。EXCEL2003,celeron1.2G,メモリ376M,winXPです。 どうぞよろしくお願いいたします。

  • エクセルVBA escキーのマクロ

    初心者に毛が生えた状態です。エクセル2000を使っています。 ワークシートをWクリックするとユーザーフォームを表示するようにマクロの記述をしています。 ユーザーフォームをキャンセルボタン(×)で閉じるとシートのセルの中にカーソルが入った状態になります。 それをescキーを押した時のように、カーソルがセルの中に無い状態にしたいのです。 マクロの記録でescキーを押しても記録されないので、コードが分かりません。 ユーザーフォームの×ボタンを押したら、Wクリックする前の状態に戻すコードを教えてください。 よろしくお願いします。

  • Excel VBA Escキー押下をコードで表わすと…

    Excel VBA Escキー押下をコードで表わすと… Excel2003を使用しています。 ある列をダブルクリックすると、指定した範囲のセルを塗りつぶすイベントマクロを作成しました。 ダブルクリックで塗りつぶされた後は、セルが編集状態になっているので、Escキーを押して編集状態を解除していましたが、Escキーを押して編集状態を解除するところまでをコードに書いたらどうかと思い、塗りつぶしを指定しているコードの後に、『SendKeys "{ESC}"』と追加してみたのですが、追加する前と同じ状況で、編集状態のままでした。 Enterや↓キーを押した場合を試しに書いてみると、塗りつぶされた後、1つ下のセルに移動しました。 コードを追加した場所がいけないのか、それとも、使い方が間違っているのか…?? どなたかわかる方がいらっしゃいましたら、教えていただけないでしょうか。 よろしくお願いします。

  • (Delphi)ESCキーでWindowを閉じたい

    TFormにTmemoが張り付けてあるだけのメモ帳を作り、 ESCキーを押すだけで終了できるようにしたかったのですが、 情報がなくて困っています。 1),Escキーの識別方法がわかりません。 Form上でKeypressを拾えばいいのかと思ったのですが、そもそもESCキーはどのように 識別させたらよいのでしょうか?? ヘルプにESCキーという項目があるのですが期待するような内容ではなくがっかりしました。 2)procedure節を任意に呼べるのか Formをクローズする際にある処理をしているので、できればFormCloseのprocedure節を呼べると良いと思うのですが、Delphiでこういうことはできるのでしょうか? よろしくお願いいたします。

  • ESCキーにて初期化されていまう?

    こんにちは! HTMLのテキストボックスの中にて ESCキーを2回押すと画面が初期化されて しまうのですが、何か回避方法はありませんか? 何か経験のある人がいたら教えてください! お願いします。

    • ベストアンサー
    • HTML
  • VBAでESCキーを無効にしたいのですが、うまくいきません。

    EXCEL VBA でESCキーを無効にするために、 Application.EnableCancelKey = xlDisabled を使用していますが、 特定のフォルダ内のEXCELファイルを開いて、ある処理をして保存するといったプログラムでは、ESCキーを無効にすることができませんでした。 原因を探るために以下のテストプログラムを作成しましたが、実行中にESCキーを押すと(長押しすると確実に) 「実行時エラー'1004' openメソッドは失敗しました。'Workbooks'オブジェクト」 のメッセージが表示されて止まってしまいます。 どこに原因があるのでしょうか? よろしくお願いします。 以下、テストプログラム ////////// Private Sub CbStart_Click() Dim Fname As String Dim Fpath As String Application.ScreenUpdating = False Application.EnableCancelKey = xlDisabled Fpath = "d:\work\" Fname = Dir(Fpath & "*.xlsx") Do While Fname <> "" Workbooks.Open Fpath & Fname CloseWorkbook Fname Fname = Dir() Loop Application.ScreenUpdating = True End Sub 以上 //////////////////

  • VBAでTabキーを移動させたい

    Access上のフォームで、ある結果がテキストボックスに表示されたときのみ、AというコマンドにTabキーを自動的に移動させたいのですが、 1.イベントプロシージャはフォーカス取得後なのか、喪失時なのか 2.VBAはIf文でどうかけばよいのか うまくいかなくて困っています。ご回答お願いします。

  • エラーになってないのにVBAが中断される

    エラーになってないし、止めてもいないのに、VBAが中断される エクセル2010なのですが、マクロを実行すると、一定の間隔でマクロが中断してしまいます。 中断箇所は ・End With ・Set WSH = Nothing ・If tmp Like "*文字*" Then などです。 「コードの実行が中断されました」と表示されます。 中断キーは押していません。 再起動すると治るのですが、どうしてこのような現象が発生するのでしょうか?

  • テキストボックスへ改行キー入力でマクロ実行するには

    VBA-テキストボックスへ文字列を入力し、改行キーを入力したらマクロ実行という流れで処理したいのですが、実現可能でしょうか?