Microsoft Access 掲示板

カレンダー形式のスケジュール管理フォーム作成時における、日付の色を変更したい。

34 コメント
views
4 フォロー

いつも大変参考にさせて頂いております。
この度【カレンダー形式のスケジュール管理フォーム作成】を利用させて頂きました。

※※※より以下の部分を参考にさせていただいているのですが

T_休日 備考 に
【A】と入力した場合⇒カレンダーの文字を【緑色】に
【B】と入力した場合⇒カレンダーの文字を【青色】に
それ以外は【赤色】のままで

…としたいのですが、どのように記述すればよろしいのでしょうか…。
ご教授いただけませんでしょうか
よろしくお願いします。


※※※
お世話になります。
カレンダー作成させて頂きスケジュールの管理をしたいのですが、
指定した休日を設定するようなやり方教えて頂けないでしょうか?
アドバイスよろしくお願い致します。

2012.02.0411:07 |URL | #8BaZKrGo [edit]

hatena says...""

休日を登録するテーブルを作成します。

T_休日
日付 日付/時刻型 主キー
備考 テキスト型

記事のコードの日にち設定関数を下記ように変更します。(※がついてる行は修正箇所です。)

'カレンダー 日にち設定関数
Private Function SetCalendar()
Dim i As Integer, D As Date, m As Integer, n As Integer

  m = Me.月
  FirstDay = DateSerial(Me.年, m, 1)
  FirstDay = FirstDay - Weekday(FirstDay)
  For i = 1 To 42
    With Me("D" & i)
      D = FirstDay + i
      .Caption = Day(D)
      .ControlTipText = Nz(DLookup("備考","T_休日","日付=#" & D & "#")) '※ 休日の備考をヒントテキストに設定
      If Weekday(D) = 1 Or .ControlTipText <> "" Then '※
        .ForeColor = vbRed  '日曜または祝日は文字色 赤
      ElseIf Weekday(D) = 7 Then
        .ForeColor = vbBlue  '土曜は文字色 青
      Else
        .ForeColor = vbBlack
      End If
      n = Month(D)
      If m = n Then
        .FontSize = 11
      Else
        .FontSize = 8 '月が異なるときは文字を小さく
      End If
    End With
    Me("T" & i).Caption = ""
  Next

End Function

以上です。下記もご参考に。

http://hatenachips.blog34.fc2.com/blog-entry-187.html$カレンダー形式のスケジュール管理フォーム作成 その2

OMOTI
作成: 2020/04/15 (水) 17:24:35
通報 ...
  • 最新
  •  
9
OMOTI 2020/04/23 (木) 08:44:15 05554@4b4f6

できました!いつも本当にありがとうありがとうございます( ;∀;)

10
OMOTI 2020/04/23 (木) 09:08:41 05554@4b4f6

度々すみません。
時刻が表示できたのですが、〇〇:〇〇:〇〇 表示になります。
クエリ(Q_作業日一覧カレンダー表示用)でも「時刻(S)」を設定しているのですが、それだけではだめですか?

12
            .Caption = .Caption & rs!開始時間 & " " & rs!略名 & vbCrLf

を下記に変更してください。

            .Caption = .Caption & Format(rs!開始時間,"hh:nn") & " " & rs!略名 & vbCrLf
11
OMOTI 2020/04/24 (金) 14:46:26 05554@4b4f6

カレンダーの日時を反映させるのは、サブフォームではなく、サブレポート(R_カレンダー表示用)を使用しています。

レポート内のテキストボックスをクリックすることで、入力フォームが開くようにしています。
(プロパティシート⇒テキストボックス⇒クリック時⇒フォームを開く(where条件式 [ID]=[Reports]![R_カレンダー表示用]![ID])

レポートの状態のときは、正常に動くのですが、カレンダーのフォームにサブレポートとして組み込んだ場合に、テキストボックスをクリックすると「パラメーターの入力」を求められます。

色々やってみたのですが分かりません。
ご教授いただけませんでしょうか…
いつもすみません…

13

埋め込みマクロで設定しているということでしょうか。
where条件式 は下記のようにしてください。

[ID]=[Forms]![フォーム名]![サブレポートコントロール名].[Report]![ID]

詳細は下記をご参考に。

サブフォームとサブフォームコントロールの違いとは? - hatena chips

サブフォームコントロールで説明してますか、サブレポートコントロールでも同じです。

14
OMOTI 2020/04/27 (月) 14:54:18 05554@4b4f6

時間表示、サブレポートの件、解決しました。
以前、説明されている記事を拝見せずに、質問してすみませんでした。
ありがとうございました。

15
OMOTI 2020/04/27 (月) 17:54:49 05554@4b4f6

【カレンダー形式のスケジュール管理 その3】 
詳細データ表示用をサブフォームではなく、サブレポートを利用しています。

サブレポート内のテキストボックスをクリックし、入力フォーム(F_入力フォーム)を開き、スケジュールの詳細を入力しています。
入力フォームに作成している「保存ボタン」をクリックするときにサブレポートもリクエリしています。(サブレポートに表示に反映させている)

 '保存ボタンクリック時
Private Sub cmd保存_Click()
 BeforeUpdate = ""
 DoCmd.RunCommand acCmdSaveRecord
 BeforeUpdate = "[イベント プロシージャ]"
 Forms![F_Calendar]![R_作業日一覧_カレンダー表示用].Report.Requery
 End Sub

===============
F_Calendar への反映で困っています。

カレンダー形式のスケジュール管理 その3 
サブフォームで更新や追加、削除したときにカレンダーにその結果を反映させるためにサブフォームのフォームモジュールに下記のイベントプロシージャを作成します。SetScheduleをPublic宣言したのはサブフォームから呼び出す必要があったためでした。

'フォーム 更新後処理
Private Sub Form_AfterUpdate()
    Me.Parent.SetSchedule
End Sub

'フォーム 削除後確認
Private Sub Form_AfterDelConfirm(Status As Integer)
    If Status = acDeleteOK Then Me.Parent.SetSchedule
End Sub

=====
サブフォームではなく、サブレポートの為、上記のままではダメだと思い、色々と手を尽くしていますが、
うまくいきません。

入力フォームの「保存」ボタンをクリックしたときに、F_Calendar にも反映させたいのです。
入力フォームからサブレポートを反映させ、サブレポートからF_Calendarを反映させるでも良いのですが…

度々で申し訳ございません。ご教授いただけませんでしょうか。

16

サブレポート内のテキストボックスをクリックし、入力フォーム(F_入力フォーム)を開き、スケジュールの詳細を入力しています。
入力フォームに作成している「保存ボタン」をクリックするときにサブレポートもリクエリしています。(サブレポートに表示に反映させている)

入力フォームでの更新がF_Calendarに反映されないので、反映させたいということですね。
下記のように1行追加してみてください。

'保存ボタンクリック時
Private Sub cmd保存_Click()
    BeforeUpdate = ""
    DoCmd.RunCommand acCmdSaveRecord
    BeforeUpdate = "[イベント プロシージャ]"
    Forms![F_Calendar].SetSchedule '追加
    Forms![F_Calendar]![R_作業日一覧_カレンダー表示用].Report.Requery
End Sub
17
OMOTI 2020/04/28 (火) 10:31:03 05554@4b4f6

いつもありがとうございます。
反映させることができました。

18
OMOTI 2020/05/08 (金) 12:02:40 05554@4b4f6

いつもお世話になります。

スケジュール内容が未確定の場合は、赤文字で表示したいと思っています。
短いテキストで 未確定の場合⇒空欄,確定の場合⇒確定 と作成しています。

カレンダーに「確定」の文字を表示する必要はないのですが、文字色を分けて 確定・未確定の判断をしたいと思っています。
どのように記述すれば、表示することができるのでしょうか…
よろしくお願いします。

Public Sub SetSchedule()
Dim i As Integer, rs As DAO.Recordset
    For i = 1 To 42
        Me("T" & i).Caption = ""
    Next
    Set rs = CurrentDb.OpenRecordset( _
        "SELECT 開始時間, 作業日, 略名 FROM Q作業日一覧カレンダー表示用 WHERE " &
        "作業日>#" & FirstDay & "# AND 作業日<=#" & FirstDay + 42 & "#",

        dbOpenForwardOnly, dbReadOnly)
    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .Caption = .Caption & rs!開始時間 & " " & rs!略名 & vbCrLf
        End With
        rs.MoveNext
    Loop
    rs.Close: Set rs = Nothing
End Sub

19
名前なし 2020/05/08 (金) 17:26:57 fa807@1d866

スケジュール内容が未確定の場合は、赤文字で表示したいと思っています。
短いテキストで 未確定の場合⇒空欄,確定の場合⇒確定 と作成しています。

このデータが入っているフィールド名は何でしょうか。
また、どこを赤文字で表示するのでしょうか。
空欄なら、文字自体がないのですが。

20
OMOTI 2020/05/11 (月) 17:23:51 05554@4b4f6

大変失礼致しました。
赤文字表示したいフィールド名は、略名(hatenaさんが作成されているものでは「件名」の部分になります。)になります。
T1~T42のラベル部分の中で、未確定の件名を赤文字で表示したいです。
(予定を入力しているのですが、確定と未確定が一見すると分からないので)

Q_作業日一覧カレンダー表示用 に フィールド名⇒確定(短いテキスト)があります。
未確定の場合は空欄です。  空欄の場合は略名(件名)を赤文字で表示し、「確定」と入力されたら略名(件名)が黒文字になるという設定にはできないでしょうか。

21

開始時間 と 略名 を一つのラベルに表示してますので、略名だけ赤字表示するのは現状では無理です。
全体を赤字表示するか、背景色を変更するとか、マークを表示するとか、別の方法で目立たせる方法ではだめですか。

22
OMOTI 2020/05/12 (火) 15:51:23 05554@4b4f6

開始時間と略名の両方が赤字表示でも良いです。

お手数をお掛けして申し訳ございません。

23
OMOTI 2020/05/14 (木) 17:20:23 05554@4b4f6

同日の中に確定と未確定があるので、それが分かる方法であれば、開始時間と略名が両方とも赤文字 や
マークなどでも構わないのです。

24
hatena 2020/05/14 (木) 18:05:04 修正

同日の中に確定と未確定があるので、それが分かる方法であれば、開始時間と略名が両方とも赤文字 や
マークなどでも構わないのです。

1日に複数の予定がある場合があるということですね。
だとすると、予定毎に色を変えることは一つのラベルでは無理です。
1日の最大予定数のラベルを1日当たりに配置するか、
あるいは、ラベルをテキストボックスに変更して「文字書式」プロパティを「リッチ テキスト形式」にして文字色を変更するように仕組みにする必要があります。
どちらにしても、大幅な修正が必要になります。

マークを追加するという方式なら、コードを少し修正するだけですみます。

例えば未確定([確定]フィールドが空欄)なら、略名の前に ☆ を表示するという仕様なら下記のコードになります。

    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .Caption = .Caption & rs!開始時間 & " " & Nz(rs!確定,"☆") & rs!略名 & vbCrLf
        End With
        rs.MoveNext
    Loop
25
OMOTI 2020/05/15 (金) 16:55:21 05554@4b4f6

☆を表示することができました。ありがとうございます。

☆を赤色にすることはできますでしょうか。

26
OMOTI 2020/05/15 (金) 16:59:30 05554@4b4f6

例えば未確定([確定]フィールドが空欄)なら、略名の前に ☆ を表示するという仕様なら下記のコードになります。

確定フィールドに「確定」という文字を入力した場合、略名の前に「確定」と表示されます。
空欄の場合⇒☆  確定と入力された場合⇒(なにも表示しない(””))とすることはできるのでしょうか。

27
hatena 2020/05/15 (金) 17:38:57 修正

確定フィールドに「確定」という文字を入力した場合、略名の前に「確定」と表示されます。

済みません。下記に修正してください。

    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .Caption = .Caption & rs!開始時間 & " " & IIf(rs!確定<>"","","☆") & rs!略名 & vbCrLf
        End With
        rs.MoveNext
    Loop

☆を赤色にすることはできますでしょうか。

現状のラベルでは無理です。
ラベルをテキストボックスに変換して、プロパティを下記のように設定。
「文字書式」プロパティを「リッチ テキスト形式」
「編集ロック」を「はい」

    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .value = .value & "<p>" & rs!開始時間 & " "  & IIf(rs!確定<>"",""," <font color=red>☆</font>") & rs!略名 & "</p>"
        End With
        rs.MoveNext
    Loop

他の部分の Caption も Value に修正、他に修正が必要かも知れません。
実際に試してませんので、うまくいかないかも知れません。

28
OMOTI 2020/05/18 (月) 16:36:30 05554@4b4f6

ありがとうございます。
ご教授頂いたようにラベルをテキストボックスに変更する方法を試してみたところ、☆の色を変更することができました。
本当にありがとうございます。

29
OMOTI 2020/05/18 (月) 16:39:46 05554@4b4f6

すみません。見落としていました。
☆を赤文字に変更したら、箇条書きで表示されなくなりました。
同日中の予定が、すべて続けて表示されます。
ラベルの時のように件名毎に改行できますでしょうか。

30

下記のコードだとどうでしょうか。

    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .value = .value & "<div>" & rs!開始時間 & " "  & IIf(rs!確定<>"",""," <font color=red>☆</font>") & rs!略名 &  </div>
        End With
        rs.MoveNext
    Loop
31
OMOTI 2020/05/19 (火) 09:24:36 05554@4b4f6

早速ご回答いただきありがとうございます。
< /p >
を削除することで改行することができました。

Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .value = .value & "< p >" & rs!開始時間 & " "  & IIf(rs!確定<>"",""," ") & rs!略名 & < /p >
        End With
        rs.MoveNext
    Loop

32
OMOTI 2020/05/19 (火) 09:25:31 05554@4b4f6

&< /p> です。すみません。

33

#27 のコードが間違ってました。
正しくは下記です。

    Do Until rs.EOF
        With Me("T" & rs!作業日 - FirstDay)
            .value = .value & "<p>" & rs!開始時間 & " "  & IIf(rs!確定<>"",""," <font color=red>☆</font>") & rs!略名 & "</p>"
        End With
        rs.MoveNext
    Loop

#27 の回答のコードも修正しておきます。

34
OMOTI 2020/05/21 (木) 09:38:29 05554@4b4f6

ご回答いただき、本当にありがとうございます。
ご教授頂いた通り、修正致しました。