ロゴ(青) Excel/VBA Tips ロゴ(緑)


下記のドキュメントは Microsoft に帰属するものです

  Tips06: カレンダーコントロール色々 内から参考ドキュメントとしてリンクしている

        MSDN 「MonthView コントロールの使い方」
           http://www.microsoft.com/japan/developer/library/VBCon98/vbconusingmonthviewcontrol.htm

  というドキュメントが MSDNライブラリの改編に伴い行方不明になってしまいました。辛うじてGoogle
  キャッシュからすくい上げるのに間に合いましたので、臨時で当サイト内に保存する事としました。
  今後、当該ドキュメントが見つかり次第、当該ドキュメントへのリンクに戻し、本ページは削除する事と
  します。尚、コントロール外観の画像には、当AddinBoxで用意した画像を差し込んであります。
  ( AddinBox 管理人  2006/9/23 )

  [ 英語版 MSDN / Month Calendar Control Reference ]

  VBA で MonthView コントロールに太字設定する方法を下記スレッドに投稿しました。
        VBA研究所 / Excel質問箱W: ID23059 ( Internet Archive )

  MonthView コントロールで 不連続な複数日付を選択(選択日付を太字表示)する方法を
  下記スレッド(英語)に投稿しました。
        MrExcel.com / [VBA] Userform: MonthView control - select dates not next to each other?
        サンプルブック ( BoldMonthView.xlsm )
       
  尚、MonthView 自体のバグにより、
  選択した日付が [月の切り替え] により、
  1行目左端(前月部分の場合、左図
  では 7月31日)になった場合、その
  箇所のみ太字表示されません。
  ( 解説図 )



MonthView コントロールの使い方

関連項目

MonthView コントロールを使用すると、カレンダーに似たインターフェイスを介して日付情報の表示や設定を容易に行えます。単一の日付を選択することも、特定の範囲の日付を選択することも可能です。

このコントロールは、キーボードまたはマウスを使用して操作できます。コントロールの先頭のボタンは、月のスクロールに使用します。

このコントロールは、一度に最大 12 か月を表示できます。この機能は、関心のある日付の前後の日付の情報を表示する場合に役立ちます。

MonthView コントロール

 
 

用途

日付を設定および取得する

コントロール内で現在選択されている日付は、Value プロパティによって決定されます。フォームの Load イベントなどで表示される前にコントロールの Value を設定すると、コントロールで最初に選択される日付を指定できます。

MonthView1.Value = "10/31/97"

既定値により、コントロールの Value は現在の日付に設定され、現在の日付はコントロールが最初に表示されるときに選択されます。コードを書き換えて MonthView の Value を変更すると、コントロールは即座に更新され、新しい設定値を反映します。

コントロールの特定のイベントも、日付の値を返すことができます。たとえば、DateClick イベントは、コントロール内で日付がクリックされたときに発生します。DateClick イベントは、ユーザーがクリックした日付を示す DateClicked 値を返します。同様に、DateDblClick イベントは、ダブルクリックされてイベントを引き起こした日付を示す DateDblClicked 値を返します。これらのイベントを使用する場合、コントロールの Value プロパティではなく、イベントが返す値を参照する必要があります。Value は、イベントが発生した後にならないと更新されないためです。

Value プロパティは、希望する方法でフォーマットできる日付値を返します。MonthView コントロールは、特定の日付情報を返すプロパティもいくつか保持しています。Month プロパティは、現在選択されている日付を含む月の整数値 (1 〜 12) を返します。Day プロパティは、現在選択されている日付番号 (1 〜 31) を返し、DayOfWeek プロパティは選択されている日付の曜日を示す値を返します。DayOfWeek プロパティの値は、vbDayOfWeek 定数の値に対応します。Year プロパティは、選択されている日付を含む年を整数値で返します。最後に、Week プロパティは、選択されている日付を含む週の番号を返します。

これらのプロパティは、実行時に読み取るだけでなく設定することも可能であり、現在選択されている日付にさまざまな影響を及ぼします。たとえば、DayOfWeek プロパティの値を変更すると、同じ週の指定の曜日に対応する日付が選択されます。このため、Day プロパティの値も変わりますが、週の関係で Month プロパティの値も変わる場合があります。Year プロパティの値を変更すると、指定の年において現在の日付が選択されるため、DayOfWeek の値に影響することがあります。

Week プロパティの値を変更する場合は特に注意が必要です。別の週を現在の週として設定すると、DayOfWeek の値は変わりませんが、Day の値に影響し、Week、Month、Year に影響することもあります。たとえば、ユーザーが金曜日を選択し、水曜日で終わる年において Week の値を 52 に設定した場合、Week の値は 1 になり、Month および Year の値も変わります。通常、第 1 週と第 52 週は重複します。

日付の範囲を選択する

MonthView コントロールを使用すると、連続した範囲の日付を表示することも、ユーザーが日付の範囲を選択することも可能です。選択項目を複数の日付に拡大するには、MultiSelect プロパティを真 (True) に設定する必要があります。MaxSelCount プロパティの値を変更すると、選択できる最大日数をコントロールできます。既定値により、最大選択日数は 7 日です。

SelStart および SelEnd プロパティは、選択される日を決定します。これらのプロパティの値をチェックすると、ユーザーが選択した範囲を把握できます。1 日だけを選択する場合、2 つのプロパティの値は同じになります。コードにおいてこれらのプロパティの値を設定すると、日付の範囲はコントロール内で選択されます。コードを使用して SelStart および SelEnd プロパティを設定する場合、次の規則に従います。

たとえば、ハロウィーンの前の週を選択するには、次のコードを実行します。

MonthView1.Value = "10/31/97"
MonthView1.MaxSelCount = 7
MonthView1.SelStart = "10/25/97"
MonthView1.SelEnd = "10/31/97"

コントロールの外観をフォーマットする

MonthView コントロールの外観をカスタマイズする方法は多数あります。MonthBackColor、TitleBackColor、TitleForeColor、TrailingForeColor などさまざまなカラー属性を使用すると、コントロール独自のカラー スキームを作成できます。たとえば、TrailingForeColor を使用すると、表示されている月に先行または後続する日付のカラーを決定できます。

コントロールのフォントの設定値は、コントロールの幅と高さを決定します。大きなフォントを使用すると、指定されたフォント サイズに対応してコントロールが拡大します。逆に、フォントを小さく設定すると、コントロールは縮小します。フォントのサイズは、Font プロパティで設定します。

複数の月を表示する

MonthView コントロールは、一度に 1 か月から 12 か月まで表示できます。表示する月数とコントロール内での整列方法を指定する必要があります。この指定作業には、MonthRows および MonthColumns プロパティを使用します。たとえば、MonthRows を 2 に設定し、MonthColumns を 3 に設定すると、MonthView コントロールは一度に 6 か月を表示します。コントロール先頭の矢印ボタンをクリックすると、前後の 6 か月をスクロールできます。

個々の月は、区切線で区切られます。区切り記号のサイズは、コントロールのサイズと表示特性に依存します。ただし、SeperatorHeight および SeparatorWidth プロパティを使用すると区切り記号の寸法を取得できます。また、CalendarWidth および CalendarHeight プロパティを使用すると、単一カレンダーのサイズも取得できます。これらのプロパティは、新しい行または列が追加された場合に、コントロールのサイズをどのように変更するかを決定するのに役立ち、それに応じて各コントロールのサイズと位置を調整できます。

他のフォーマットの設定値

StartOfWeek プロパティの値を変更すると、週の最初の曜日を決定できます。ShowWeekNumbers プロパティを真 (True) に設定すると、コントロールに週番号を表示できます。週番号は、週の最初の曜日の左側にある個別の列に表示されます。コントロールの底辺にある現在の日付の表示は、ShowToday プロパティによって有効または無効にできます。

特定の日にちをフォーマットする

MonthView コントロールの日にち番号のフォントを太字に設定することができます。この機能を使用すると、 休日や定期休暇などの特別な日付を強調して、通常の日付と区別することができます。複数の日付を同時に太字にすることが可能です。次の月にスクロールする間はこの太字情報は保持されませんが、GetDayBold イベントを使用することでこの機能をシミュレートできます。

次の例は、すべての日曜日を太字にします。新しい月にスクロールされた場合も同様です。

Private Sub MonthView1_GetDayBold(ByVal StartDate As Date, ByVal Count As Integer, State() As Boolean)
   Dim i As Integer
   i = vbSunday
   While i < Count
      State(i - MonthView1.StartOfWeek) = True
      i = i + 7
   Wend
End Sub

キーボード インターフェイス

MonthView コントロールは、キーボードで操作できます。以下の表は、実行時にコントロールで行えるさまざまなアクションについて説明しています。

キー 説明
翌日を選択します。
前日を選択します。
先週の同じ曜日を選択します。
翌週の同じ曜日を選択します。
PageUp 過去の月にスクロールします。
PageDown 将来の月にスクロールします。
Ctrl + PageUp 前年にスクロールします。
Ctrl + PageDown 翌年にスクロールします。

MonthView コントロールを操作する

MonthView コントロールでは、コントロールの先頭にある 2 つのボタンのほかにも、現時点で表示される月を設定する方法があります。特定の年の特定の月を表示することが可能です。

特定の月を選択するには

  1. カレンダーの先頭の月名をクリックします。コンテキスト メニューにすべての月の名前が表示されます。

  2. メニューから、希望する月の名前を選択します。

コントロールは、現在の年において選択された月を表示します。

特定の年に直接移動するには

  1. 希望する月を選択します。

  2. カレンダーの先頭の年番号をクリックします。編集モードに入ります。

  3. 上下のスクロール ボタンをクリックして年をスクロールします。

  4. 年を指定した後、スクロール ボタンの外側をクリックするか、Enter キーを押します。

コントロールは、指定した年の現在の月を表示します。

配布時の注意   MonthView コントロールは、MSCOMCT2.ocx ファイルにある ActiveX コントロール グループの一部です。自分のアプリケーションで MonthView コントロールを使用するには、MSCOMCT2.ocx ファイルをプロジェクトに追加する必要があります。アプリケーションを配布する場合、ユーザーの Microsoft Windows の System または System32 ディレクトリに MSCOMCT2.ocx ファイルをセットアップする必要があります。ActiveX コントロールをプロジェクトに追加する方法については、「プログラミング ガイド」を参照してください。


©2001 Microsoft Corporation. All rights reserved. Terms of Use

ロゴ(ゴールド) ロゴ(ゴールド)

角田 桂一 Mail:addinbox@h4.dion.ne.jp