二つのエラーを発生させたい
- ひとつのプロシージャー内で、二つのエラートラップを仕掛ける事は出来ないのでしょうか?
- i = "b"で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」と表示させるにはどうすればいいでしょう?
- Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、i = "a"のエラーで、 「Err2のエラー: 型が一致しません。」へ移動してしまいます。
- ベストアンサー
二つのエラーを発生させたい
ひとつのプロシージャー内で、 二つのエラートラップを仕掛ける事は出来ないのでしょうか? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description On Error GoTo Err2 i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub を行うと、 i = "b" で2回目のエラーが発生した時は、 実行時エラーになってしまいます。 i = "b" で2回目のエラーが発生した時に、 「Err2のエラー: 型が一致しません。」 と表示させるにはどうすればいいでしょう? Sub エラーが発生した時にエラーが発生したら() Dim i As Long On Error GoTo Err1 On Error GoTo Err2 i = "a" Exit Sub Err1: MsgBox "Err1のエラー: " & Err.Description i = "b" Exit Sub Err2: MsgBox "Err2のエラー: " & Err.Description End Sub にすると、 i = "a" のエラーで、 「Err2のエラー: 型が一致しません。」 へ移動してしまいます。
- TWOAWZFHUH
- お礼率100% (41/41)
- オフィス系ソフト
- 回答数1
- ありがとう数1
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
on error gotoによって「エラー処理ルーチン」にジャンプしますが、エラー処理ルーチンの中ではエラー処理は出来ません。必ずその場でエラーになります。 エラー処理を継続するには、必ず一回resumeによってエラー処理ルーチンから復帰する必要があります。 作成例: sub macro1() dim i as long on error goto err1 i = "a" on error goto err2 i = "b" exit sub err1: msgbox "ERR1" resume next err2: msgbox "ERR2" resume next end sub より詳しい使い方は、on error あるいは resume のヘルプを熟読してください。
関連するQ&A
- エラーが発生した場合は VBA
Sub Sample() On Error GoTo Err1 Dim i As Integer i = "あ" '←ココで構文エラーとなる。 MsgBox "あ" Debug.Print "無事終了します" Exit Sub Err1: Debug.Print "エラーになりました" i = 1 Resume Next 'エラーの発生した次の行から処理を続行します。 End Sub このようなエラー処理で エラーが発生した場合は MsgBox "あ" ではなく i = "あ" '←ココで構文エラーとなる。 に戻る事は出来ないのでしょうか?
- ベストアンサー
- オフィス系ソフト
- On ErrorでエラーNoが0
On ErrorでエラーをトラップしてエラーNOとエラー内容をダイアログに表示させています。 Private Sub pv_sample() Dim errno as Long On Error GoTo ERR_END ' 処理内容略 Exit Sub ERR_END: errno = Err.Number MsgBox "システムエラー エラーNO(" & errno & ") 内容(" & Err.Description & ")" End Sub エラーが発生した場合はErr.Numberには0以外がセットされるはずですが 「システムエラー エラーNO(0) 内容()」 というメッセージが表示されることがあります。 On Eroorで飛んできたときにエラーNoが0になってしまうことはありえるのでしょうか。
- ベストアンサー
- Visual Basic
- GoToRecordで実行時エラー '2105'
教えてください。Access2000です。 Private Sub 次へ_Click() On Error GoTo Err_次へ_Click On Error Resume Next DoCmd.GoToRecord , , acNext Exit_次へ_Click: Exit Sub Err_次へ_Click: MsgBox ERR.Description Resume Exit_次へ_Click End Sub って書いたのですが、最後のレコードまで行った後 「次へ」をクリックすると実行時エラーになってしまいます。 移動できませんとかメッセージで逃げたいのですがどうすればいいのでしょうか? お願いします。
- ベストアンサー
- オフィス系ソフト
- ループの中で何度もエラー処理をしたい場合
サンプルコードを掲載します。 実際はセルの文字を取得するのでこのコードとは違いますが、形は同じです。 Sub test() Dim i As Long On Error GoTo Err1 For i = 0 To 5 i = "a" Err1: Debug.Print i "は、エラーになりました" Next End Sub このようなコードの場合、 i=0の時に、1回目のエラーになって 「0は、エラーになりました」が返りますが、 その後、i=1になった時に i = "a"を実行すると On Error GoTo Err1が無視され、エラーになってしまいます。 ループの中でエラーが何度発生してもエラー処理をする方法はありますか? On Error Resume Next以外の方法で教えてください。
- ベストアンサー
- オフィス系ソフト
- アクセスのVBAについて、フォームの On Error Goto についておしえてください。
Private Sub cmd次_Click() On Error GoTo Err DoCmd.GoToRecord , , acNext Exit_Click: Exit Sub Err: MsgBox "この先にレコードがなくなると、ここをつうかするのだろうか。" Resume Exit_Click End Sub 一連の流れについて,ご解説ください。よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 「エラーの宣言」「エラーの定義」
Sub Sample() Dim i As Long On Error GoTo test i = "a" test: i = 1 End Sub こういうのって、 On Error GoTo test の部分は「エラーの宣言」って言いますか? 「エラーの定義」でしょうか?
- ベストアンサー
- オフィス系ソフト
- vbaで、postgresqlアクセス問題
vbaで、postgresqlアクセス問題: データベースに、データは ***0000, でも、vbaで、取得したのは ****.四つの0が自動に、削除されました。 例: postgresqlに、 40000 ⇒ vbaで、取得した: 4 vbaソース: Option Explicit Sub subPgGetData() Dim adoCn As New ADODB.Connection On Error GoTo ErrLogin: With adoCn .Provider = "PostgreSQL OLE DB Provider" .Properties("Data Source") = Range("B1").Value .Properties("Location") = Range("B2").Value .Properties("User ID") = Range("B3").Value .Properties("Password") = Range("B4").Value .Open End With On Error GoTo 0 Dim adoRs As New ADODB.Recordset On Error GoTo ErrSql: adoRs.Open Range("B6").Value, adoCn, adOpenForwardOnly, adLockReadOnly On Error GoTo 0 Workbooks.Add Cells.CopyFromRecordset adoRs Cells.Columns.AutoFit adoRs.Close: Set adoRs = Nothing adoCn.Close: Set adoCn = Nothing Exit Sub ErrLogin: MsgBox "" & vbCrLf & Err.Number & vbCrLf & Err.Description Set adoCn = Nothing Exit Sub ErrSql: MsgBox "" & vbCrLf & Err.Number & vbCrLf & Err.Description Set adoRs = Nothing adoCn.Close: Set adoCn = Nothing Exit Sub End Sub わかる方はご指示ください。 よろしくお願いします。
- 締切済み
- PostgreSQL
- アクセスVBAのエラーについて
フォームを閉じるためにフォームにボタンを置いて、イベントプロシージャに下記のように書き込みました。すると添付画像のエラーが返ってきてマクロが動きません。 Private Sub コマンド103_Click() On Error GoTo Err_コマンド103_Click DoCmd.Close Exit_コマンド103_Click: Exit Sub Err_コマンド103_Click: MsgBox Err.Description Resume Exit_コマンド103_Click End Sub で、「ファイル-オプション-現在のデータベース」の”フォームの表示”を問題のフォームに切り替えたら問題なく動作します。 つまり”フォームの表示”で選んだフォームでしかコマンドボタンのマクロが動きません。全てのフォームでマクロが動くにはどうしたらよいのでしょうか?
- 締切済み
- Access(アクセス)
- Access2013で確認メッセージを消すには
画像ファイルの管理データベースを作っています。 管理データベースには、ローカルファイルのフルパスのみ記録し ボタンをクリックしたとき、Windowsフォトビューアで プレビューするようにコードを書きました。 しかし、JPGファイルを開くときは問題ないのですが PNGファイルを開くとき、毎回Microsoft Officeの確認メッセージ ~を開いています。ファイルにはウイルスやコンピューターに問題を起こす 可能性のあるものが含まれていることがあります。 このファイルが信頼できる所からのものか確かめてください。 ファイルを開きますか? が表示されます。 メッセージを表示させない為にはどうしたら良いか、ご教授願います。 以下、ファイルを開く為に作ったコード2種です。 実行結果は同じです。 コード1 Private Sub OpenBotan_Click() Dim strInput As String On Error GoTo Error_GetUserAddress strInput = Me.パス Application.FollowHyperlink strInput, , True GetUserAddress = True Exit_GetUserAddress: Exit Sub Error_GetUserAddress: MsgBox Err & ": " & Err.Description GetUserAddress = False Resume Exit_GetUserAddress End Sub コード2 Private Sub イメージ21_Click() On Error GoTo エラー Dim myTextValue As TextBox Set myTextValue = Me.パス If IsNull(myTextValue) Then MsgBox "URLが未入力です。": Exit Sub Me.イメージ21.HyperlinkAddress = "" '--- A Me.イメージ21.HyperlinkAddress = myTextValue Exit Sub エラー: MsgBox Err.Number & " : " & Err.Description Exit Sub End Sub
- 締切済み
- オフィス系ソフト
- ヘルプファイルはどこにあるのですか?
VBAについて質問です。 Sub OnErrorTest() On Error GoTo ErrorTrap Dim i As Integer i = "test" ErrorTrap: MsgBox "エラー番号:" & Err.Number & vbCrLf & _ "エラー内容:" & Err.Description & vbCrLf & _ "ヘルプファイル名" & Err.HelpContext & vbCrLf & _ "プロジェクト名:" & Err.Source End Sub 上記のコードを実行すると エラー番号:13 エラー内容:型が一致しません。 ヘルプファイル名1000013 プロジェクト名:VBAProject が返ってきます。 しかしエラーなのにヘルプは表示されません。 なのにヘルプファイル名1000013となるのはどういう事なのでしょうか? この1000013と言う数字は何を表していますか?
- ベストアンサー
- その他(プログラミング・開発)
お礼
ありがとうございました。