Excel VBA質問箱 IV

当質問箱は、有志のボランティア精神のおかげで成り立っています。
問題が解決したら、必ずお礼をしましょうね。
本サイトの基本方針をまとめました。こちら をご一読ください。

投稿種別の選択が必要です。ご注意ください。
迷惑投稿防止のため、URLの入力を制限しています。ご了承ください。


10182 / 13644 ツリー ←次へ | 前へ→

【23059】MonthViewで指定の日を太字にできない 猫おじさん 05/3/11(金) 16:35 質問[未読]
【23062】Re:MonthViewで指定の日を太字にできない ichinose 05/3/11(金) 18:07 発言[未読]
【23064】Re:MonthViewで指定の日を太字にできない 角田 05/3/11(金) 19:01 回答[未読]
【23083】Re:MonthViewで指定の日を太字にできない 角田 05/3/12(土) 17:23 回答[未読]
【23251】Re:MonthViewで指定の日を太字にできない 猫おじさん 05/3/17(木) 11:31 お礼[未読]

【23059】MonthViewで指定の日を太字にできない
質問  猫おじさん  - 05/3/11(金) 16:35 -

引用なし
パスワード
    お世話になります。
 簡単な備品の貸出予約簿を作っているのですが、
既に予約されてる日を、MonthViewで表示させたいのですが、
うまくいきません。
 #21268を参考に、下記のようにしているのですが、
太字になりません。
 UserFormには、MonthView1が1つあるだけの状態で
試しています。
 MonthViewのバージョンは、調べ方が分からず不明です。
 OS WinNT、Excel2002、Access2002です。 
 
 Private Sub UserForm_Activate()
  MonthView1.DayBold(Date) = True
   DoEvents
 End Sub

 UserForm_Initialize()でも太字になりません。
 
 実際には、Dateの部分を複数指定する予定です。

 また、日にちを太字にする以外に、もっと目立つ、
 赤文字にする。背景を赤にする等が可能なものでしょうか?
 もし、分かればご教示ください。

【23062】Re:MonthViewで指定の日を太字にできない
発言  ichinose  - 05/3/11(金) 18:07 -

引用なし
パスワード
   ▼猫おじさん さん:
こんばんは。

> お世話になります。
> 簡単な備品の貸出予約簿を作っているのですが、
>既に予約されてる日を、MonthViewで表示させたいのですが、
>うまくいきません。
> #21268を参考に、下記のようにしているのですが、
>太字になりません。
> UserFormには、MonthView1が1つあるだけの状態で
>試しています。
> MonthViewのバージョンは、調べ方が分からず不明です。
> OS WinNT、Excel2002、Access2002です。 
> 
> Private Sub UserForm_Activate()
>   MonthView1.DayBold(Date) = True
>   DoEvents
> End Sub
>
> UserForm_Initialize()でも太字になりません。
> 
> 実際には、Dateの部分を複数指定する予定です。
>
> また、日にちを太字にする以外に、もっと目立つ、
> 赤文字にする。背景を赤にする等が可能なものでしょうか?
> もし、分かればご教示ください。
私も使ったことはありませんが・・・。
なんか、おかしいですねえ!!

Private Sub UserForm_Activate()
   DoEvents
   MonthView1.DayBold(Date) = True
End Sub

これで試してみてください

【23064】Re:MonthViewで指定の日を太字にできない
回答  角田 WEB  - 05/3/11(金) 19:01 -

引用なし
パスワード
   こんにちは。
>> Private Sub UserForm_Activate()
>>   MonthView1.DayBold(Date) = True
>>   DoEvents
>> End Sub
ichinose さんが書いているように
 (1) DoEvents でワンクッション置いてから
 (2) True 設定
にしないと反映されないです。

でもでも、「月を切換」したら太字は消えますよ。
最初の「月」に戻って来ても太字は戻りません。
> #21268を参考に
なので、↑この人も結局は上手く行ってないと思うんだけど‥‥‥

VBの場合には[GetDayBold]というイベントで設定すると
「月の切換」の際に処理できるようですが、VBAでは
このイベントは何故か動きません。
イベントの一覧には載っているんですがね ┐('〜`;)┌

【23083】Re:MonthViewで指定の日を太字にできない
回答  角田 WEB  - 05/3/12(土) 17:23 -

引用なし
パスワード
   >でもでも、「月を切換」したら太字は消えますよ。
>最初の「月」に戻って来ても太字は戻りません
「太字」に指定した日付を、自前でリストし、常にそのリストで
太字設定を送ってやるようにしないと駄目ですね。

(注)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

【23251】Re:MonthViewで指定の日を太字にできない
お礼  猫おじさん  - 05/3/17(木) 11:31 -

引用なし
パスワード
    ichinoseさん、角田さんありがとうございました。
 コードのあちこちに、Doeventsを入れたり消したりし、
思いどうりに太文字にすることができました。
 いままで、フォームの一部が画面に張り付く等がいやなので、
Unloadの後にDoeventsを入れていましたが、フォームの
表示前にDoeventsを入れることは思いつきませんでした。
 ありがとうございました。

10182 / 13644 ツリー ←次へ | 前へ→
ページ:  ┃  記事番号:
2610219
(SS)C-BOARD v3.8 is Free