|
>でもでも、「月を切換」したら太字は消えますよ。
>最初の「月」に戻って来ても太字は戻りません
「太字」に指定した日付を、自前でリストし、常にそのリストで
太字設定を送ってやるようにしないと駄目ですね。
(注)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
|
|