まりふのひと

カレンダーコントロールを使う

納期が迫っているので、とりあえずこの方法で、日付に入力を行なうことにする。下松のF社で行なっている方法であるが、作り方を忘れたので、手順を整理した。

1)カレンダー フォームの作成
  1. [デザインビューでフォームを作成]を起動する。
  2. [挿入]メニュー==>[ActiveX コントロール]をクリック。
  3. Microsoft カレンダーコントロール]を選択し、
  4. [OK]ボタンをクリック。

  5. フォームの幅、高さをカレンダーと同じにし、
  6. フォームのプロパティを設定する。
    例えば、
    • スクロールバー: なし
    • レコードセレクター: なし
    • 移動ボタン: なし
  7. カレンダーのコントロール名: ここでは、“ctlCalendar”とし た。 
  8. [名前を付けて保存]する。(ここでの名前は、“frmGetCalendar”)
2)呼び出し方
Private Sub lbl日誌日_Click()
    VARAns = get_Calendar(Me.txt日誌日)
    If Not IsNull(VARAns) Then Me.txt日誌日 = VARAns
End Sub
3)get_Calendar() のモジュール
Option Compare Database
Option Explicit
Const MYObjName As String = "modGet_Calendar"
Const MYFormName As String = "frmGetCalendar"
Public P_getCalendar戻り値 As Variant

Public Function get_Calendar(Optional ByVal argIniDate = Null) As Variant
On Error GoTo Err_get_Calendar
Dim mbTitle As String

    mbTitle = MYObjName & "/get_Calendar"
    If IsDate(argIniDate) = False Then argIniDate = Date
    DoCmd.openForm MYFormName, , , , , acDialog, argIniDate
    get_Calendar = P_getCalendar戻り値
    
Exit_get_Calendar:
    Exit Function
    
Err_get_Calendar:
    MsgBox Err.Number & "/" & Err.Description, vbCritical, mbTitle
    Resume Exit_get_Calendar
End Function

懸念事項

  1. 自分はAccess2002,お客は Access2003。
    カレンダーコントロールのバージョン違いで、上手く動くか? の懸念がある。