UPDATEが失敗した時に、On Error GoTo errTrapで、失敗を知らせるようにしています。
しかし、正常にレコードが更新されていても、errTrap:に飛んでしまします。
[ツール] - [オプション] - [全般]では、[エラー処理対象外のエラーで中断]を選択しています。
なにが、原因なのでしょうか?
yname = Environ("UserProfile") 'ユーザー名を取得
strFileName = "ホゲホゲ.accdb" 'データベースのファイル名
Set adoCn = CreateObject("ADODB.Connection") 'ADODBコネクションオブジェクトを作成
adoCn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=" & yname & "\Desktop\VBA\ホゲ\ホゲー\" & strFileName & ";" 'Accessファイルに接続
jn = "1234567891123"
ct = -60
dat = "2024/10/7"
On Error GoTo errTrap
strSQL = "UPDATE シフト SET ID" & jn & "変更 = " & ct & " WHERE 年月日 = #" & dat & "#;"
adoCn.Execute strSQL '正常にレコードが更新されている
End With
errTrap:
Debug.Print strSQL
MsgBox Err.Number & ": " & Err.Description
Exit Sub
回答し辛い質問ですが・・・
プログラムは上から下に順番に実行されていきますので、
正常にレコードが更新されてからerrTrap:に飛んでいるのではなく、
更新後にerrTrap:移行の処理が順番に実行されています。
試してませんが、errTrap:の前でexit sub(function)で処理を抜けるようにすればいいはずです。
言われてみれば、exit sub(function)がなければ終了していないので、
下部のerrTrapの処理が行われてしまいますね。
変数を多用するケースではないので、
いちいちfunctionに飛ばすのも面倒だと思って飛ばさないようにしていたのですが、
途中で終了させるわけにはいかないので、
目障りではありますが、飛ばして処理する事に致します。
ありがとうございました。