hatena
hatena
2020/04/02 (木) 21:56:50
ガントチャート表示用のラベルを42個、予定表示のラベルの下に配置してください。
名前は、G1 ~ G42 とします。
文字配置は「中央」にしておくといいと思います。
SetSchedule関数を下記のように修正してください。
Public Sub SetSchedule()
Dim i As Integer
For i = 1 To 42
Me("T" & i).Caption = ""
Me("G" & i).Caption = ""
Next
Dim rs As DAO.Recordset
Set rs = CurrentDb.OpenRecordset( _
"SELECT 開始日, 終了日, 件名 FROM T_予定 WHERE " & _
"開始日>#" & FirstDay & "# AND 開始日<=#" & FirstDay + 42 & "#", _
dbOpenForwardOnly, dbReadOnly)
Do Until rs.EOF
Dim BeginI As Long
BeginI = rs!開始日 - FirstDay
Me("T" & BeginI).Caption = rs!件名
If Not IsNull(rs!終了日) Then
Dim EndI As Long
EndI = rs!終了日 - FirstDay
Me("G" & BeginI).Caption = ChrW(8656) '"←"
Me("G" & EndI).Caption = Me("G" & EndI).Caption & ChrW(8658) '"→"
For i = BeginI + 1 To EndI - 1
Me("G" & i).Caption = "="
Next
End If
rs.MoveNext
Loop
rs.Close: Set rs = Nothing
End Sub
これで表示できると思います。
ただし、月またぎの予定は考慮してないので、現状のままだとエラーになるか、表示できないと思いますので、
その辺を考慮した処理を追加する必要があります。
今日のところはここまでで。明日、時間が取れたら、月またぎの部分のコードを追加します。
Furuさんの方でもまずは上記のコードの内容を理解して、可能なら月またぎの処理も考えてみてください。
通報 ...
凍結されています。
早速のお返事有難うございます。
上記コードを理解できるように努めてみます。
追伸;
ちなみに月跨ぎの場合はエラー表示が出ました。
例えば、
月マタギの”2月”を表示した瞬間、”G59”フィールドが見つかりません。
日付をクリックすると”T43870”フィールドが見つかりません。というのもでした。
お時間の都合が付きましたら、教えていただけると幸いです。
カレンダーの範囲をまたぐときにも対応できる様に処理を追加しました。
下記がサンプルファイルです。
FrmCalendar2.zip
早々にご対応いただき有難うございます。
イメージしていたコードより思いの外複雑でしたが、勉強になりました。
今後ともよろしくお願いいたします。