Access小僧:デフォルト値を入力 [コンピューター]
更新をサボっていました。
医療費控除の医療費明細を作るAccessファイルがあって、医療費の入力を行うフォームで氏名を変更したら、病院、治療内容、交通費の値を、その人が良く行く病院の値(デフォルト値)に変更するマクロがあるのですが、そのマクロの変更です。
【変更内容】
病院、治療内容、交通費の値、全てがデフォルト値だったら、病院、治療内容、交通費の値を変更せずにマクロを終了する。
【変更後のマクロ】
変更部分を赤字で示します。
Private Sub 氏名ID_LostFocus()
'【機能】氏名IDが変更されたら、病院ID、治療内容ID、交通費IDをデフォルト値に変更する
'【変数】
Dim myAns As Integer ' 答え
Dim Int病院ID, Int治療内容ID, Int交通費ID As Integer
Dim St病院, St治療内容, St交通費, St氏名 As String
Dim myString1 As String
'【実行コード】
' 病院ID、治療内容ID、交通費IDのデフォルト値
' 氏名ID ⇒ Int病院ID
Int病院ID = DLookup("病院ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 氏名ID ⇒ Int治療内容ID
Int治療内容ID = DLookup("治療内容ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 氏名ID ⇒ Int交通費ID
Int交通費ID = DLookup("交通費ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 現在の病院ID、治療内容ID、交通費IDが既にデフォルト値だったら、処理終了する
If ([病院ID] = Int病院ID) And ([治療内容ID] = Int治療内容ID) And ([交通費ID] = Int交通費ID) Then
Exit Sub
End If
St病院 = DLookup("病院名", "MT_病院", "病院ID=" & Int病院ID)
St治療内容 = DLookup("治療内容", "MT_治療内容", "治療内容ID=" & Int治療内容ID)
St交通費 = DLookup("着駅", "MT_交通費", "交通費ID=" & Int交通費ID)
St氏名 = DLookup("氏名", "MT_氏名", "氏名ID=" & [氏名ID])
myString1 = "病院ID=" & Int病院ID & "(" & St病院 & ")" & vbCrLf
myString1 = myString1 & "治療内容ID=" & Int治療内容ID & "(" & St治療内容 & ")" & vbCrLf
myString1 = myString1 & "交通費ID=" & Int交通費ID & "(" & St交通費 & ")" & vbCrLf
myString1 = myString1 & St氏名 & "のデフォルト値に変更しますか?"
myAns = MsgBox(myString1, vbOKCancel + vbExclamation + vbDefaultButton2)
' Debug.Print "氏名=" & DLookup("氏名", "MT_氏名", "氏名ID=" & [氏名ID])
' OKが押されたら、病院ID、治療内容ID、交通費IDをデフォルト値に変更する
If myAns = vbOK Then
[病院ID] = Int病院ID
[治療内容ID] = Int治療内容ID
[交通費ID] = Int交通費ID
End If
End Sub
医療費控除の医療費明細を作るAccessファイルがあって、医療費の入力を行うフォームで氏名を変更したら、病院、治療内容、交通費の値を、その人が良く行く病院の値(デフォルト値)に変更するマクロがあるのですが、そのマクロの変更です。
【変更内容】
病院、治療内容、交通費の値、全てがデフォルト値だったら、病院、治療内容、交通費の値を変更せずにマクロを終了する。
【変更後のマクロ】
変更部分を赤字で示します。
Private Sub 氏名ID_LostFocus()
'【機能】氏名IDが変更されたら、病院ID、治療内容ID、交通費IDをデフォルト値に変更する
'【変数】
Dim myAns As Integer ' 答え
Dim Int病院ID, Int治療内容ID, Int交通費ID As Integer
Dim St病院, St治療内容, St交通費, St氏名 As String
Dim myString1 As String
'【実行コード】
' 病院ID、治療内容ID、交通費IDのデフォルト値
' 氏名ID ⇒ Int病院ID
Int病院ID = DLookup("病院ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 氏名ID ⇒ Int治療内容ID
Int治療内容ID = DLookup("治療内容ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 氏名ID ⇒ Int交通費ID
Int交通費ID = DLookup("交通費ID", "MT_氏名", "氏名ID=" & [氏名ID])
' 現在の病院ID、治療内容ID、交通費IDが既にデフォルト値だったら、処理終了する
If ([病院ID] = Int病院ID) And ([治療内容ID] = Int治療内容ID) And ([交通費ID] = Int交通費ID) Then
Exit Sub
End If
St病院 = DLookup("病院名", "MT_病院", "病院ID=" & Int病院ID)
St治療内容 = DLookup("治療内容", "MT_治療内容", "治療内容ID=" & Int治療内容ID)
St交通費 = DLookup("着駅", "MT_交通費", "交通費ID=" & Int交通費ID)
St氏名 = DLookup("氏名", "MT_氏名", "氏名ID=" & [氏名ID])
myString1 = "病院ID=" & Int病院ID & "(" & St病院 & ")" & vbCrLf
myString1 = myString1 & "治療内容ID=" & Int治療内容ID & "(" & St治療内容 & ")" & vbCrLf
myString1 = myString1 & "交通費ID=" & Int交通費ID & "(" & St交通費 & ")" & vbCrLf
myString1 = myString1 & St氏名 & "のデフォルト値に変更しますか?"
myAns = MsgBox(myString1, vbOKCancel + vbExclamation + vbDefaultButton2)
' Debug.Print "氏名=" & DLookup("氏名", "MT_氏名", "氏名ID=" & [氏名ID])
' OKが押されたら、病院ID、治療内容ID、交通費IDをデフォルト値に変更する
If myAns = vbOK Then
[病院ID] = Int病院ID
[治療内容ID] = Int治療内容ID
[交通費ID] = Int交通費ID
End If
End Sub
ヤバイぜ!ありがとうございます。(^^♪
by cheese999 (2023-09-22 02:01)