Microsoft Access 掲示板

hatena chips様のスケジュール管理フォーム

32 コメント
views
4 フォロー

お世話になります。

hatena chips様のカレンダー形式のスケジュール管理フォームを使わせて頂いているのですが、開いたときに、当日のスケジュールを表示するには、VBAをどのようにすればよろしいでしょうか?

ご教授頂けましたら幸いです。よろしくお願いいたします。

CROSS
作成: 2021/09/24 (金) 13:25:46
通報 ...
  • 最新
  •  
6
CROSS 2021/09/25 (土) 12:07:48 dd71f@d523b

hatena様
ご教授ありがとうございます。

できました。

ありがとうございます。いろいろアレンジして、またわからなかったら教えてください。

7
CROSS 2021/09/29 (水) 17:29:10 2e007@b0316

また、ご教示ください。
左のカレンダーの件名の表示ですが、1件目と2件目に一行スペースがありますが、これを詰めて表示するためにはどのようにしたらよいでしょうか?

たびたびになり恐縮ですが、ご指導ください。
よろしくお願い申し上げます。

8

SetScheduleプロシージャ内の下記の部分の、vbCrLf は改行ですので、それを一つにすればいいです。

    Do Until rs.EOF
        With Me("T" & rs!日付 - FirstDay)
            .Caption = .Caption & rs!件名 & vbCrLf & vbCrLf
        End With
        rs.MoveNext
    Loop
9
CROSS 2021/10/01 (金) 08:29:49 dd71f@d523b

ご返事ありがとうございます。できました。本日より部署で運用開始しました。

10
CROSS 2021/10/29 (金) 13:57:28 dd71f@d523b

お世話になっております。また、ご教示ください。
左のカレンダーの件名の表示ですが、時刻順に表示することは可能でしょうか?時刻と件名を表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?

11

SetSchedule()内のSQLに ORDER BY 時刻を追加すればいいでしょう。

    Set rs = CurrentDb.OpenRecordset( _
        "SELECT 日付, 件名 FROM T_予定 WHERE " & _
        "日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "# ORDER BY 時刻", _
        dbOpenForwardOnly, dbReadOnly)
12
CROSS 2021/10/29 (金) 18:45:52 dd71f@d523b

ありがとうございます。
順番変わりました。ありとうございます。もうひとつの時刻と件名を同時表示できるとさらに視認性が上がるのですが。VBAをどう書いたらよいでしょうか?

あとですが、最初の記載が悪くリカバー時にクラスオブジェクトがすべて消えてしまいました。
こちらはどのようにリカバーすればよいでしょうか?古いバックアップはあります。

初心者で大変ご迷惑をおかけいたします。部署で動いているため困っています。

13
りんご 2021/10/29 (金) 23:17:27 c564b@0e907

時刻と件名を同時表示… VBAをどう書いたらよいでしょうか?

 当て推量ですが、「改行スペースを詰めて表示」に続けて、「件名と改行の間に時刻を加えて表示」
 当て推量ですが、「時刻順」に続けて、「日付と件名と時刻でレコードセットを開く」

クラスオブジェクトがすべて消えてしまいました。

 よくわからないけれど、もう一度サンプルダウンロードからやり直すのは?

初心者で大変ご迷惑をおかけいたします。部署で動いているため困っています。 

 運用開始するのであれば、個人使用で出来る範囲に留めておくほうが、無難でしょう。
 やった事がないのであれですが、部署で運用開始とか、ものすごい覚悟が要ると思います。

14

赤字を緑字に修正すればいいでしょう。

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 T_予定 WHERE " & _
+        "SELECT 日付, 時刻, 件名 FROM T_予定 WHERE " & _
        "日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "# ORDER BY 時刻", _
        dbOpenForwardOnly, dbReadOnly)
    Do Until rs.EOF
        With Me("T" & rs!日付 - FirstDay)
-           .Caption = .Caption & rs!件名 & vbCrLf
+           .Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf
        End With
        rs.MoveNext
    Loop
    rs.Close: Set rs = Nothing
End Sub

一例ですので、これをヒントにして希望の形に修正してください。
それぞれのコードの意味を調べて理解するようにしましょう。

実運用に使用するなら、コードの意味を理解せずに運用開始するのは、
りんごさんも言われてますが、いろいろ危険です。

こちらはどのようにリカバーすればよいでしょうか?古いバックアップはあります。

「クラスオブジェクト」というのが何か分かりませんが、
古いバックアップから作り直すか、
りんごさんの回答のようにサンプルファイルをダウンロードしなおして作り直すかですね。
テーブルが残っているなら、テーブルはそれを使えばいいでしょう。

どちらにしても定期的にバックアップを取るのは必須です。

15
CROSS 2021/10/30 (土) 07:46:17 dd71f@d523b

ご回答ありがとうございます。
ご指摘のとおりです。今VBAを勉強中です。コードの方を優先して理解するように勉強いたします。
初歩的な質問に親身にお答えくださり大変ありがとうございます。
りんごさんのご指摘のように対応できるようになるまでは、バックアップで対処していきます。

クラスオブジェクトの件はバックアップファイルから復旧できました。

 .Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf

は、どうやらエラーになるようです。

16

.Caption = .Caption & Foramt(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf

は、どうやらエラーになるようです。

あっ、すみません。タイプミスしてました。 ForamtFormat

.Caption = .Caption & Format(rs!時刻, "hh:nn") & " " & rs!件名 & vbCrLf
17
CROSS 2021/10/30 (土) 17:31:39 dd71f@d523b

hatena様

ご返事ありがとうございます。なかなかお聞きするのがハードルが高くなってしまいまして、
Formatは気づいてやってみたのですが、タグのところ F_Carendarが時間と件名の表示になって
カレンダーには一切表示がなくなってしまいました。

もしよろしければ、この件だけ教えて頂けないでしょうか?ゆくゆくは担当別に色を変える予定でおり、こちらは自力でと考えております。大変申し訳ございませんが教えて頂けないでしょうか?

18
CROSS 2021/10/31 (日) 07:28:00 dd71f@d523b

私の間違えに気づきました。表示できました。大変もうしわけございませんでした。ありがとうございます。
以後、自分で研究いたします。レベルを考えわかる範疇で頑張ってみます。ありがとうございました。そして初歩的な質問で皆さんにご迷惑をおかけいたしました。

19
CROSS 2022/02/13 (日) 11:27:40 dd71f@d523b

たびたびになりますが、ご教授ください。
略の条件によって色を変えるように指定したいのですが、

実行時エラー2465
指定した式で参照されている”関”フィールドが見つかりません。
と表示されてしまいます。

VBAは以下になります。できれば、時間、略、氏名を一緒に変えたいのですが
よろしくお願いいたします。

ublic 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 T予定 WHERE " &
         "日付>#" & FirstDay & "# AND 日付<=#" & FirstDay + 42 & "# ORDER BY
時刻", _
         dbOpenForwardOnly, dbReadOnly)
     Do Until rs.EOF
         With Me("T" & rs!日付 - FirstDay)
             .Caption = .Caption & Format(rs!時刻, "hh:nn") & " " & rs!略 &
rs!氏名 & vbCrLf
             If Me(rs!略).Value = "関" Then
       Me(rs!略 & rs!氏名).ForeColor = 8388608
     Else
       Me(rs!略 & rs!氏名).ForeColor = 0

End If

         End With
         rs.MoveNext
     Loop
     rs.Close: Set rs = Nothing
End Sub

20

エラーメッセージが出たときに、[デバッグ]ボタンを押すとどの行が選択表示されますか。

21
CROSS 2022/02/13 (日) 17:16:21 dd71f@d523b

 hatena様
お手数をおかけいたします。

    If Me(rs!略).Value = "関" Then

が選択されます。

22

If Me(rs!略).Value = "関" Then

If rs!略.Value = "関" Then
に変更してみてください。

あと、
Me(rs!略 & rs!氏名).ForeColor
もエラーになりそうです。

略の条件によって色を変えるように指定したいのですが、

とのことですが、なんの色を変えたいのかよく考えてみてください。

23
CROSS 2022/02/14 (月) 07:27:41 dd71f@d523b

hatena様
お手数をおかけいたします。
If rs!略.Value = "関" Then  はデバッグできましたが、
Me(rs!略 & rs!氏名).ForeColor がエラーになりました。
Meを外したり、rs!略だけにしても同じです。

色を変えたいのは表示させている 時間と略と氏名の一行、一行を略の選択によって色を変えたいです。

24
りんご 2022/02/14 (月) 22:04:51 07313@0e907 >> 23

 ちら見回答であれですが、上手く出来ないなら、2つに分ければいいんじゃない。略の前景色は、ほにゃらら、氏名の前景色は、ほにゃらら、みたいに。

26
りんご 2022/02/14 (月) 23:30:11 c564b@0e907 >> 23

 よく見たら、ラベルでしたね。ラベルの中身をカラフルに、色やフォントを変える文字列関数ってありましたっけ、誰かフォローして下さい。
 視認性に拘るなら、略のラベルと氏名のラベルを同じように用意して最初から作りましょう。
 視認性よりも可読性・保守性が大事だと思います。明日、明後日、来週、来月、来年、5年、10年後に見たときに、パッと理解・説明出来ないなら無意味ですよ。

25

ForeColorというのは「前景色」プロパティです。「前景色」プロパティはテキストボックスのプロパティです。

rs!略 & rs!氏名 は、レコードセットの「略」フィールド、「氏名」フィールドに入っているデータです。
Me(rs!略 & rs!氏名) としたら、そのデータと同じ名前のテキストボックスを探すことになりますが、そのような名前のテキストボックスはないですよね。

まずは、それぞれのコードの意味を理解するように努力してください。最初は難しいと思いますが、それをしないとスキルアップはしません。

とりあえず、
With Me("T" & rs!日付 - FirstDay)
の部分でテキストボックスを指定しています。

Withの意味も調べてみてください。

27
CROSS 2022/02/15 (火) 19:33:20 dd71f@d523b

hatena様

ご指導ありがとうございます。ヒントを頂き、色付けできました。Withよく理解できました。
初心者で申し訳ございませんでした。

しかし、この方法ですと予定の案件がすべて色が変わってしまいました。考えてみれば当たり前でした。
これを一案件毎に条件毎に色を変えるのはむつかしいでしょうか?

調べて勉強しようとは思いますが、何かとっかかりのヒントを頂ければ幸いです。

28

まず、前回の回答の訂正から。
前回の回答でテキストボックスと書いていましたが、ラベルの間違いです。ラベルと置き換えて読んでください。

さて、本題です。
一つのラベル内のテキストの色(前景色)を部分的に変えることはできません。
行毎に変えたいなら、行数分のラベルに分割することになりますね。

29
CROSS 2022/03/05 (土) 18:40:08 c7455@b5450

Hatena様

色々調べているのですが、分割が解らす困っています。
ラベルを改行前に細工をする感じになりますか?
もう少しヒントいただけたら幸いです。

30
CROSS 2022/03/05 (土) 23:35:30 c7455@d523b

今回の件は課員からの要望が多いので形にさせてください。よろしくお願いいたします。

31
りんご 2022/03/07 (月) 03:05:51 c564b@0e907

例えば、2分割、オブジェクトを2つ作成。

例えば、6分割、オブジェクトを6つ作成。

たぶん、こんな感じではないかと思います。

Do Until rs.EOF
Me("ラベル" & rs!日付 - FirstDay & “予定” & rs!予定番号 & “の時刻”).Caption = rs!時刻
Me("ラベル" & rs!日付 - FirstDay & “予定” & rs!予定番号 & “の案件”).Caption = rs!案件
Me("ラベル" & rs!日付 - FirstDay & “予定” & rs!予定番号 & “の担当者”).Caption = rs!担当者
 If rs!案件の条件 = “ほにゃらら“ Then
 Me("ラベル" & rs!日付 - FirstDay & “予定” & rs!予定番号 & “の担当者”).ForeColor = 8388608
 End If
rs.MoveNext
Loop

(日付別)予定番号と案件の条件をテーブルに作成。
※オブジェクトの数を超えて表示出来ないので、1日に何件までと上限を設ける事になりそう。

32
りんご 2022/03/07 (月) 03:23:08 c564b@0e907

>> 30
 業者に依頼したり、カレンダーアプリを探したりするほうが、幸せになれると思いますよ?