カレンダーの画面とプログラム紹介


イメージ

  1. Option Explicit
  2. Dim Togetsu As Date
  3. Dim StartYobi As Integer 'サブルーチンDaySetから移動
  4. Dim Tuitachi As Date 'サブルーチンDaySetから移動 'テキストボックスの文字色
  5. Private Const Red = &HFF&
  6. Private Const Blue = &HFF0000
  7. Private Const Black = &H0
  8. Private Sub cbEnd_Click() '終了ボタンがクリックされた時
  9. Unload Me
  10. End Sub
  11. Private Sub cbHyoji_Click() '表示ボタンがクリックされた時
  12. Togetsu = CDate(tbNen & "/" & tbTuki & "/01")
  13. Call DaySet
  14. End Sub
  15. Private Sub cbKongetsu_Click() '今月ボタンがクリックされた時
  16. Togetsu = Date
  17. Call DaySet
  18. End Sub
  19. Private Sub cbYokugetsu_Click() '翌月ボタンがクリックされた時
  20. Togetsu = DateAdd("m", 1, Togetsu)
  21. Call DaySet
  22. End Sub
  23. Private Sub cbYokunen_Click() '翌年ボタンがクリックされた時
  24. Togetsu = DateAdd("yyyy", 1, Togetsu)
  25. Call DaySet
  26. End Sub
  27. Private Sub cbZengetsu_Click() '前月ボタンがクリックされた時
  28. Togetsu = DateAdd("m", -1, Togetsu)
  29. Call DaySet
  30. End Sub
  31. Private Sub cbZennen_Click() '前年ボタンがクリックされた時
  32. Togetsu = DateAdd("yyyy", -1, Togetsu)
  33. Call DaySet
  34. End Sub
  35. Private Sub tbNen_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'カーソルが年のコントロールを出る時
  36. If tbNen <= 1900 Or 2099 < tbNen Then
  37. MsgBox "1901〜2099年を入力してください", , "カレンダー"
  38. Cancel = True
  39. End If
  40. End Sub
  41. Private Sub tbTuki_Exit(ByVal Cancel As MSForms.ReturnBoolean) 'カーソルが月のコントロールを出る時
  42. If tbTuki < 1 Or 12 < tbTuki Then
  43. MsgBox "1〜12 の数字を入力してください", , "カレンダー"
  44. Cancel = True
  45. End If
  46. End Sub
  47. Private Sub UserForm_Initialize() '初期画面の設定
  48. Togetsu = Date
  49. Call DaySet
  50. End Sub
  51. Private Sub DaySet() '1ヶ月分の日を画面に設定
  52. 'Dim StartYobi As Integer → 一番上に移動
  53. 'Dim Tuitachi As Date → 一番上に移動
  54. Dim Matubi As Integer
  55. Dim i As Integer
  56. tbNen = Year(Togetsu)
  57. tbTuki = Month(Togetsu)
  58. Tuitachi = CDate(tbNen & "/" & tbTuki & "/01")
  59. StartYobi = YobiKeisan2(Tuitachi)
  60. Matubi = Day(DateAdd("d", -1, DateAdd("m", 1, Tuitachi)))
  61. For i = 1 To StartYobi - 1
  62. Me("TextBox" & i).Visible = False
  63. Next i
  64. For i = StartYobi To StartYobi + Matubi - 1
  65. Me("TextBox" & i).Visible = True
  66. Me("TextBox" & i) = i - StartYobi + 1
  67. If Me("TextBox" & i) < 10 Then
  68. Me("TextBox" & i) = " " & Me("TextBox" & i)
  69. End If
  70. Next i
  71. For i = Matubi + StartYobi To 37
  72. Me("TextBox" & i).Visible = False
  73. Next i
  74. Call HolidaysSet
  75. End Sub
  76. Private Sub HolidaysSet() '祝休日のセット
  77. Dim Holiday As Integer
  78. Dim i As Integer '一旦すべての日の文字色を黒に戻し、説明文を消す
  79. For i = 1 To 37
  80. Me("TextBox" & i).ForeColor = Black
  81. Me("TextBox" & i).ControlTipText = ""
  82. Next i '日曜の文字色を赤にする
  83. For i = 1 To 36 Step 7
  84. Me("TextBox" & i).ForeColor = Red
  85. Next i
  86. '土曜の文字色を青にする
  87. For i = 7 To 35 Step 7
  88. Me("TextBox" & i).ForeColor = Blue
  89. Next i '1990年以降の休日設定しか、しない
  90. If tbNen < 1990 Then Exit Sub
  91. Select Case tbTuki
  92. Case 1
  93. Call RedSet(1, "元日")
  94. Holiday = GetMonday(Tuitachi, 2) '第2月曜を計算
  95. Call RedSet(Holiday, "成人の日")
  96. Case 2
  97. Call RedSet(11, "建国記念の日")
  98. Case 3
  99. Holiday = Shunbun(tbNen) '春分の日の計算
  100. Call RedSet(Holiday, "春分の日")
  101. Case 4
  102. Call RedSet(29, "みどりの日")
  103. Case 5
  104. Call RedSet(3, "憲法記念日")
  105. Call RedSet(4, "国民の休日")
  106. Call RedSet(5, "こどもの日")
  107. Case 7
  108. Call RedSet(20, "海の日")
  109. Case 9
  110. If tbNen < 2003 Then
  111. Call RedSet(15, "敬老の日")
  112. Else '2003年から第3月曜
  113. Holiday = GetMonday(Tuitachi, 3)
  114. Call RedSet(Holiday, "敬老の日")
  115. End If
  116. Holiday = Shubun(tbNen) '秋分の日の計算
  117. Call RedSet(Holiday, "秋分の日")
  118. Case 10
  119. Holiday = GetMonday(Tuitachi, 2) '第2月曜を計算
  120. Call RedSet(Holiday, "体育の日")
  121. Case 11
  122. Call RedSet(3, "文化の日")
  123. Call RedSet(23, "勤労感謝の日")
  124. Case 12
  125. Call RedSet(23, "天皇誕生日")
  126. End Select
  127. End Sub
  128. Private Sub RedSet(hi As Integer, Setsumei As String) '文字色を赤にする
  129. Dim Idx As Integer
  130. Idx = StartYobi + hi - 1
  131. Me("TextBox" & Idx).ControlTipText = Setsumei
  132. Me("TextBox" & Idx).ForeColor = Red
  133. If Idx Mod 7 = 1 Then '休日が日曜日なら、休日振替で翌日を休日とする
  134. Idx = Idx + 1
  135. Me("TextBox" & Idx).ControlTipText = Setsumei & "の振替"
  136. Me("TextBox" & Idx).ForeColor = Red
  137. End If
  138. End Sub


戻る



楽天モバイル[UNLIMITが今なら1円] ECナビでポインと Yahoo 楽天 LINEがデータ消費ゼロで月額500円〜!


無料ホームページ 無料のクレジットカード 海外格安航空券 解約手数料0円【あしたでんき】 海外旅行保険が無料! 海外ホテル