前提・実現したいこと
https://hatenachips.blog.fc2.com/blog-entry-191.html
こちらのサイトを参考にして、常に表示されるカレンダーを作成しています。
(access2007までにあったカレンダコントロールのようなものです。)
上記サイトで紹介されているものは、日付の入ったテキストボックスをクリック時にその日付を取得して
カレンダーフォームを開き、カレンダーをクリックしてテキストボックスに日付を反映させています。
日付のテキストボックスをクリックしてカレンダーを表示するのではなく、
常にカレンダー表示して、クリックした際に日付のテキストボックスに日付を反映させてあげたいと思っています。
追記
サブフォームとして、ほかのフォームにカレンダーを張り付けてカレンダーを利用したいと考えています。
発生している問題・エラーメッセージ
該当のソースコード
VBA
1 2'フォーム 開くとき 3Private Sub Form_Open(Cancel As Integer) 4 Dim i As Integer 5 6 Dim WindowHandle As Long 7 Dim DeviceContextHandle As Long 8 Dim aRect As RECT 9 Dim PixelToInchX As Long 10 Dim PixelToInchY As Long 11 Dim X As Long '左位置 12 Dim Y As Long '上位置 13 Dim WorkAreaRight As Integer 14 Dim WorkAreaBottom As Integer 15 16 WindowHandle = GetFocus() 17 If WindowHandle = 0 Then Exit Sub 18 19 GetWindowRect WindowHandle, aRect 20 21 DeviceContextHandle = GetDC(WindowHandle) 22 PixelToInchX = GetDeviceCaps(DeviceContextHandle, LOGPIXELSX) 23 PixelToInchY = GetDeviceCaps(DeviceContextHandle, LOGPIXELSY) 24 25 X = (aRect.Right / PixelToInchX) * INCH_TO_TWIP 26 Y = (aRect.Top / PixelToInchX) * INCH_TO_TWIP 27 ReleaseDC WindowHandle, DeviceContextHandle 28 29 SystemParametersInfo SPI_GETWORKAREA, 0&, aRect, 0& 30 WorkAreaRight = (aRect.Right / PixelToInchX) * INCH_TO_TWIP 31 WorkAreaBottom = (aRect.Bottom / PixelToInchX) * INCH_TO_TWIP 32 33 34 'ここでフォーカスが来ているテキストボックスの日付を取得していると思うのですが、 35 'テキストボックスをクリックしないでカレンダーを表示させたいので、別の方法で取得したい。 36 Set ctl = Screen.ActiveControl 37 If X + Me.WindowWidth > WorkAreaRight Then X = X - Me.WindowWidth - ctl.Width 38 If Y + Me.WindowHeight > WorkAreaBottom Then Y = WorkAreaBottom - Me.WindowHeight 39 Me.SetFocus 40 DoCmd.MoveSize X, Y 41 42 For i = 1 To 42 43 Me("D" & i).OnClick = "=SetDate(" & i & ")" 44 Next 45 Me.cmdPrev.OnClick = "=MoveMonth(-1)" 46 Me.cmdNext.OnClick = "=MoveMonth(1)" 47 48 If IsDate(ctl.Value) Then 49 SetCalendar CDate(ctl.Value) 50 Else 51 SetCalendar Date 52 End If 53End Sub
試したこと
[Forms]![日報]!日付2.SetFocus
[Forms]![日報]!日付2.Value = "2020/03/11"
Set ctl = Screen.ActiveControl
'別のテキストボックスに日付を入力して、フォーカスをしてみたがctlに日付が入らなかった。
openプロシージャを色々と変更したができなかった。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答2件
あなたの回答
tips
プレビュー