sk.exe 様
いつもどうもありがとうございます。
> エラーメッセージは 実行時エラー94 Nullの使い方が不正です。
を検索した時は、意味がわからなかったのですが、
教えて頂いたNz関数を調べてみたら、少し理解ができました。
<>演算子をしているため、現在or過去がNullになると
エラーになってしまっていたのですね。
sk.exe 様はエラーにならないように
Nz関数を使用して、Nullの代替値を返しているから
データを空にしてもエラーにならないのですね。
>・Date 型の変数に Null を代入することは出来ない。
そうだったのですね。だからこの場合にTrueかFalseで判別するから
データ型はBoolean を使用するのですね。
>Cancel = True
>Me!日付.Undo
そうですね。私、ここも間違っておりました。
色々とご教示頂き、どうもありがとうございます。
始めたばかりでつまづきそうですが、めげずに頑張りたいと思います。
下記に変更したところ、ちゃんと動作致しました。
Private Sub 日付_BeforeUpdate(Cancel As Integer)
Dim rc As VbMsgBoxResult
Dim dathizuke As Boolean
'変数を宣言
rc = MsgBox("日付を変更しますか?", vbYesNo + vbQuestion)
'変数rcにMsgBox YesNo型を代入
dathizuke = Nz(Me!日付.Value, "") <> Nz(Me!日付.OldValue, "")
'変数dathizukeに変更前、変更後の日付を比較を代入、Nz関数でNullの代替値を返す
If dathizuke = True Then
'もしも[日付]が以前の日付と異なるならば
If rc = vbYes Then
'もしもYesの場合
MsgBox "変更しました!", vbInformation
ElseIf rc = vbNo Then
'もしもNoの場合
MsgBox "変更を中止します!", vbCritical
Cancel = True
Me!日付.Undo '元に戻す
End If
End If
End Sub