よろしくお願いします。いつもgooの皆さんには大変お世話になっております
エクセルは2013です
現状
シートモジュールの Private Sub Worksheet_Calculate() に下記のマクロを書いています
条件が成立したらセルの値を繰り返し .Speech.Speak して警告するマクロです
Private Sub Worksheet_Calculate() に書いている理由は、サーバーのデータを読み込んで
いるからです
実際に条件が成立すれば、繰り返し.Speech.Speakしてくれるのですが
この繰り返しを止める方法がわかりません
今は、ESCキーで止めています
ネットで検索すると、「マクロ実行中にESCキーを押すとマクロが止まる」と書いてありますが
これはエクセル2013の仕様でしょうか滅多に止まりませんが
何かのタイミングで20回に1回ぐらいの頻度でマクロが止まってしまいます
以下は現在のマクロで、一部をわかりやすく書き換えています
For i = 1 To 10
With Application
.EnableEvents = False
.Speech.Speak Range("N40") & "ドシー オーバー"
.EnableEvents = True
End With
Next i
質問内容
For NextをESCキー以外で止める方法はありませんか?
教えてください
No.3ベストアンサー
- 回答日時:
APIでGetAsyncKeyState(1)を使った一例です。
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
Sub ボタン1_Click()
For i = 1 To 10
If GetAsyncKeyState(1) <> 0 Then Exit For
With Application
.EnableEvents = False
.Speech.Speak Range("N40") & "ドシー オーバー"
.EnableEvents = True
End With
Next i
End Sub
If GetAsyncKeyState(1) <> 0 Then Exit For
で マウスをクリックしたら Exit します。
詳しくは
GetAsyncKeyState(1)で検索してみてください。
ありがとうございます。
見事にマウスクリックでFOR NEXTが止まるようになりました
マクロを次のように書き換えました
For i = 1 To 10
If GetAsyncKeyState(1) <> 0 Then Exit For '追加
With Application
.EnableEvents = False
.Speech.Speak Range("N40") & "ドシー オーバー"
.EnableEvents = True
End With
Next i
以下を標準モジュールで宣言しました
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
お陰様で長い間の疑問が解けました
助かりました
ありがとうございました
No.4
- 回答日時:
ちょっと訂正いたします。
>変数宣言とSub ボタン1_Click()はどこに書いたらいいでしょうか?
>シートモジュールでしょうか?
>それとも標準モジュールでしょうか?
標準モジュールに書きますが
Declare Function GetAsyncKeyState Lib "User32.dll" (ByVal vKey As Long) As Long
だけで十分です。
Declare Sub Sleep Lib "kernel32" (ByVal dwMilliseconds As Long)
は余計な部分をコピーしてしまいました。
No.1
- 回答日時:
止める処理を書けばいいのでは?
どのような条件になったら止めるのかわかりませんが、if判定後、exit forで抜けられます。
ブロしージャー全体から抜けたいのであれば、exit sub。
手動で止めたいという意図の質問であれば無視してください
Hypnomaticさんこんにちは
早速教えていただきましてありがとうございます
Hypnomaticさんには前にもお世話になっております
exit forを初めて知りました
「if判定後、exit forで抜けられます。」ということは
止めたい時にどこかのセルに何かを入力して、それをIFで判断すればいいですね
やってみます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) vbaでセルに入力したときに,その横にあるセルを保護し入力不可にするマクロを作りたいです。 2 2022/04/24 20:59
- Visual Basic(VBA) マクロ実行時、自動で背景色を変えたい。 C列にあるチェックボックスをチェックするとB列に「TRUE」 4 2022/11/08 11:14
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2022/10/13 08:41
- Visual Basic(VBA) 動きっぱなしです。止め方とプロシージャの間違いを教えて下さい! 5 2022/08/15 23:08
- Visual Basic(VBA) 別シートから年齢別の件数をカウントしたいの続き 5 2023/01/24 00:16
- Visual Basic(VBA) ExcelVBAのマクロについて。 9 2022/05/04 14:50
- Visual Basic(VBA) まとめシートから集計シートへA列のコードが一致したら1行コピーするマクロをネット上で見つけました。こ 1 2022/08/30 14:11
- Excel(エクセル) エクセルVBAでオブジェクトが必要です 2 2022/09/10 16:37
- Excel(エクセル) エクセル VBA実行中のApplication.ScreenUpdatingについて 3 2023/07/13 21:06
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
EXCELのセルへ、デジタル時計を...
-
複数ファイルにある特定のシー...
-
Excelを開いた時に表示さ...
-
マクロ 実行ボタンを押さずに...
-
ワードからエクセルへ貼り付け...
-
エクセルのマクロ機能で前のシ...
-
エラーになってないのにVBA...
-
Excel VBA のdebug(F8キー) が...
-
エクセル グラフの軸の最小値最...
-
Wordで「原稿用紙○枚」を換算す...
-
マクロ ブックをマクロなしでコ...
-
Excelの改ページ 同シート内で...
-
マクロ実行後元に戻すことは
-
エクセルで土日列の非表示方法...
-
マクロボタンを作ってのマクロ...
-
TeraTermのマクロについて
-
エクセルに画像を貼付け縮小す...
-
Excel文字列中の太字(Bold)部分...
-
Excelのワークシート上に検索窓...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ローマ字→カタカナへ変換(エク...
-
EXCELのセルへ、デジタル時計を...
-
複数ファイルにある特定のシー...
-
マクロ 実行ボタンを押さずに...
-
エラーになってないのにVBA...
-
Excelを開いた時に表示さ...
-
Excel VBA のdebug(F8キー) が...
-
エクセルで複数のシートをまと...
-
ワードからエクセルへ貼り付け...
-
Excelの改ページ 同シート内で...
-
Excelのワークシート上に検索窓...
-
エクセルのマクロ機能で前のシ...
-
TeraTermのマクロについて
-
エクセル グラフの軸の最小値最...
-
Wordの画面を左右にスクロール...
-
マクロ ブックをマクロなしでコ...
-
モジュール内のマクロを全て実...
-
開いているフォルダを全て閉じ...
-
AccessのテーブルデータをExcel...
-
マクロ実行後元に戻すことは
おすすめ情報
hallo-2007さんこんにちは。先日もお世話になりました
私は変数宣言の場所がまだ整理できていません
変数宣言とSub ボタン1_Click()はどこに書いたらいいでしょうか?
シートモジュールでしょうか?
それとも標準モジュールでしょうか?