| 
    
     |  | >でもでも、「月を切換」したら太字は消えますよ。 >最初の「月」に戻って来ても太字は戻りません
 「太字」に指定した日付を、自前でリストし、常にそのリストで
 太字設定を送ってやるようにしないと駄目ですね。
 
 (注)Bug:1段目左端の日(前月なので通常はグレー表示)は太字設定しても太字にならない
 
 Private colBoldDate As Collection  '[太字]設定日のリスト
 
 Private Sub UserForm_Initialize()
 Set colBoldDate = New Collection
 End Sub
 
 Private Sub UserForm_Terminate()
 Set colBoldDate = Nothing
 End Sub
 
 Private Sub MonthView1_Click()
 '[月]切換時の太字表示設定
 Call SetDayBold
 End Sub
 
 Private Sub MonthView1_DateClick(ByVal DateClicked As Date)
 With MonthView1
 '[太字]設定日リストの登録有無を確認
 If (ChkDayCol(DateClicked) = False) Then
 '未登録時はリストに追加して[太字]設定
 colBoldDate.Add Item:=DateClicked, _
 Key:=Format(DateClicked, "yyyy/mm/dd")
 .DayBold(DateClicked) = True
 Else
 '登録時はリストから削除して[太字]解除
 colBoldDate.Remove Index:=Format(DateClicked, "yyyy/mm/dd")
 .DayBold(DateClicked) = False
 End If
 End With
 '[前月/翌月]部分クリック時の為に太字表示設定を実行
 Call SetDayBold
 End Sub
 
 '登録リストの日付を[太字]設定する
 Private Sub SetDayBold()
 Dim i As Integer
 With MonthView1
 For i = 1 To colBoldDate.Count
 '1〜6段目に表示されている日付以外はSkip
 If (colBoldDate(i) >= .VisibleDays(1)) And _
 (colBoldDate(i) <= .VisibleDays(42)) Then
 .DayBold(colBoldDate(i)) = True
 End If
 Next i
 End With
 End Sub
 
 '登録リスト(コレクション)の有無確認
 Private Function ChkDayCol(ByVal ChkDate As Date) As Boolean
 Dim dmy As Date
 On Error Resume Next
 'Key指定で値を取り出し、エラーになるかどうかを調べる
 dmy = colBoldDate.Item(Format(ChkDate, "yyyy/mm/dd"))
 If (Err.Number = 0) Then
 ChkDayCol = True
 Else
 ChkDayCol = False
 End If
 Err.Clear
 End Function
 
 |  |