
ACCESSのAutoKeysマクロでプロシージャを呼び出しているのですが、
そのVBAコードの中に、条件分岐を作っていて
その返り値がFalseの時だけ以降の処理を継続させようとしています。
ここでTrueの場合は警告メッセージを出した上で
処理を終えるためVBAでEndと記述しているのですが、
このTrueの際にアクションの実行エラーウィンドウが必ず出て
困っています。(格好悪い)
こちらを出ないようにするにはどうしたらいいでしょうか。
もしくはマクロ名で言うAutoKeysのような処理を、マクロを
使わずにVBAだけで記述・実行する方法はありますでしょうか?
長い質問になってしまいましたが、
ご存知のやさしい方ぜひ教えてください。
よろしくお願いします。
No.1ベストアンサー
- 回答日時:
VBA では、基本的に「End」は使用しません。
ランタイム環境では、End でエラーが発生します。
他にも、ヘルプに書かれていると思いますが
End はグローバル変数の初期化なども行われますので
以降の処理で、思わぬ結果になったりします。
「Exit Sub」 または 「Exit Function」で抜けるようにしてください。
これでもエラーが発生するようなら
原因は他にあるのでしょう。
ありがとうございます。
EndをExit Functionにして問題なく動きました。
大雑把な性格が災いしたみたいです。(笑)
本当にありがとうございました!^^
No.2
- 回答日時:
とりあえず、「End」に関してはbonaronさんの回答を見ていただくとして、本当に「格好悪い」と
いう以外の問題がないのでしたら、以下のようにSub/Functionの冒頭にエラー発生時の処理
を記述することで、エラーメッセージを出さなくすることができます。
'<案1>
'発生した全て(?)のエラーを無視して、以降の処理を継続します。
Public Function Test1() As Integer
On Error Resume Next '←エラー時には、次の処理を継続
'(変数などの宣言)
'(処理実行部)
End Sub
'<案2>
'現在把握している特定のエラーのみ無視して処理を継続し、それ以外のエラーが発生した
'場合はメッセージを表示します。
Public Function Test1() As Integer
On Error Goto Err_Test1 '←エラー時には、「Err_Test1」に飛ぶ
'(変数などの宣言)
'(処理実行部)
'ここまで問題なく処理された場合はそのままFunctionを終了
'(通常時に「エラー処理」が実行されるのを回避)
Exit Function
Err_Test1: '←エラー発生時に実行する処理が記述されている位置を示すラベル
If Err = 0 Then '←無視するエラーの番号を指定
Resume Next '次の処理を実行
Else
MsgBox Err & ":" & Error$, , "Test1" 'エラーメッセージを表示
Exit Function '処理を中止(継続させたいなら、上と同様に「Resume Next」を指定)
End If
End Sub
'※無視を指定しなかったエラーでは「(番号):(エラーメッセージ)」の形でメッセージが表示
' されますので、必要に応じ、「If Err=0 Or Err=1 Then」等と追加して下さい。
' (なお、上記「Err=0」はダミーです)
'※「Resume」などについての詳細は、ヘルプを参照してください。
' (Access2003などであれば、オンラインヘルプではなく「オフライン時のヘルプ」で検索:
' 検索ウィンドウの下方にあるコンボボックスで選択できます)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) エクセルのマクロについて教えてください。 7 2023/07/04 09:18
- Visual Basic(VBA) DisplayAlertsブロパティで ”実行時エラー424オブジェクトが必要です” 5 2022/05/15 18:02
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 6 2023/03/03 18:05
- Visual Basic(VBA) vbaエクセルマクロについて あるデータを作成し、デスクトップに.xlsx形式で保存するマクロを作成 2 2023/03/02 18:54
- Visual Basic(VBA) VBA 参照先で選んだファイルをコピーし、出力先に別名で保存したい 8 2022/05/13 20:37
- Excel(エクセル) Excelのマクロコードについて教えてください。 1 2022/03/27 10:47
- その他(Microsoft Office) VBA メール送信済で実行されるはずが、実行されない時があります。 2 2023/02/02 14:05
- Visual Basic(VBA) 【VBAエラー】Nextに対するForがありません 対策について 5 2022/11/21 21:26
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- Visual Basic(VBA) Wordマクロで指定したフォルダ名に保存する方法について 8 2022/12/13 11:35
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
メール一括送信VBAへのアドレス...
-
名前が二重に定義されています
-
vbscriptの変数宣言
-
TCPサーバ bind関数のエラーに...
-
ネットワーク上のPCのIPとホス...
-
SQLサーバーへの接続に 接...
-
エラー 'ASP 0115' について
-
C# try-catch でcatchに飛ばす方法
-
ASP 0x80004005 クライアント...
-
エラー 'ASP 0115'
-
VBSからPDFファイルを開きたい...
-
ジェネリックなメソッドでDirec...
-
ページの更新内容が反映されない。
-
FileCopy時のエラー
-
Outlookで添付ファイルの有無を...
-
CreateObject("Excel.Applicati...
-
fopenでエラーとなる
-
VBA RemoveDuplicatesで「アプ...
-
ADSIについて
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルVBA 宣言Dimの場所
-
ソケット通信で同時受信の制限?
-
TCPサーバ bind関数のエラーに...
-
VBSでIEを起動し、拡大率を変更...
-
名前が二重に定義されています
-
VBSにてサーバー中のエクセルフ...
-
vbscriptの変数宣言
-
式はメソッドではありませんと...
-
CreateObjectの同時実行時について
-
golang 空文字判定について
-
1つの作業の制限時間を増やしたい
-
EXCEL VBA API宣言でコンパイル...
-
ACCESSのAutoKeysマクロでアク...
-
VBSについて
-
標準モジュールPublic宣言変数...
-
ASPでAccessのデータを更新、削除
-
ネットワーク上のPCのIPとホス...
-
C# try-catch でcatchに飛ばす方法
-
GridView表示の高速化
-
CreateObject("Excel.Applicati...
おすすめ情報