hiroton
2025/09/19 (金) 18:16:16
2d761@f966d
Private Sub 日付カレンダー_Enter()
Me!日付.TabStop = False
~(略)~
End Sub
Private Sub 日付カレンダー_LostFocus()
Me!日付.TabStop = True
End Sub
この部分はキーボード操作向けのおまけ対策です
通常、[TAB]で次のコントロール[Shift]+[TAB]で前のコントロールに移動しますが、
・カレンダーを表示
↓
・[ESC]でカレンダーを非表示
↓
・[Shift]+[TAB]で前のコントロールに移動
とすると、「日付」テキストボックスに戻って「日付」テキストボックスのフォーカス取得時イベントが発生して再び「日付カレンダー」に戻ってくる(動かない)ので「日付」テキストボックスを飛ばしてさらにその前のコントロールに移動できるように制御しています
ついでに、いろいろ触っていたら、この状態([ESC]でカレンダーを非表示にした状態)で何か入力するとエラーが発生したので対策を置いておきます
Private Sub 日付カレンダー_Change()
On Error Resume Next
Me!次のコントロール.SetFocus
If Err <> 0 Then
DoCmd.RunCommand acCmdShowDatePicker
End If
On Error GoTo 0
End Sub
「何か入力」すると、たいていそれは日付として認識できないので、その状態でフォーカスを移動しようとしてエラーが発生します。とりあえず、エラーが発生したら何もしないで再度カレンダー表示に戻すって形で
通報 ...