|
上記、スケジュールを記入させるためのプログラムを作成してみましたが、
非連結を連結にするための関数は分かっても、
第一週間目のある位置から17日分、非連結を、連結にさせる工夫に悩んで
おりますので教えて頂けると幸いです。
(それ以外の日付表示用テキストボックスは表示しない、
記入用テキストボックスは入力できないようにLockプロパティでロックする)
★ここの部分、読んで頂けるとありがたいです。
そこの部分のプログラム表現で悩んでいます。
非連結:
(1)日付表示用テキストボックス4週間分(日01〜日28)
(2)スケジュール記入用ボックス4週間分(DD01〜DD28)
(3)色表示用ビットマップ系(bb01〜bb28)
上記の非連結コントロールが並んでいる状態で、
曜日を確認し、第1週間目のどこに置くか指定し、その位置から17日分を
連結状態にする。(1)、(2)、(3)のボックスをすべて17日分のみ連結状態に
し、それ以外は、入力不要とする。
例) 日なら1番目に指定、月なら2番目を指定
連結:日01、D01、CC01、日02、・・・17日分
プログラムで表すとしたら、下記のような感じですが、
Me.日01.ControlSource = 日01
Me.DD01.ControlSource = D01
Me.CC01.ControlSource = CC01
For文を使ってまとめられる方法はないでしょうか?
---------------------------------------------
Option Explicit
Private Sub cmb_連休_AfterUpdate() ←過去の連休を選択
On Error GoTo Err_cmb_連休_AfterUpdate
If IsNull(cmb_連休) Then ←空白は禁止
MsgBox "選択して下さい。", vbCritical, "警告"
Exit Sub
End If
Me.Filter = "ユーザID = '" & str1 & "' And 連休対象 = '" & Me.cmb_連休.Column(0) & "'": Me.FilterOn = True
↑ログインしたユーザで、かつ、選択した連休名を抽出。
Exit_cmb_連休_AfterUpdate:
Exit Sub
Err_cmb_連休_AfterUpdate:
MsgBox "編集中は使えません。" & Chr(13) & "※ 保存してからご利用下さい。", vbExclamation, "通知"
Resume Exit_cmb_連休_AfterUpdate
End Sub
--------------------------
Private Sub Form_Open(Cancel As Integer) ←記入画面を開く
Dim lngGrey As Long '色を設定する(グレー:記入できないことが分かる)
Dim inc01 As Variant '最初に設定した日付を記憶
Dim days01 As Variant '曜日を確認する
Me.RecordSource = "SELECT ・・・・・・" ←クエリを抽出
'レコードソースにて、指定したクエリからログインしたユーザのユーザIDを参照し、個人データのみ抽出する
Me.cmb_連休 = DLookup("[連休対象]", "T_連", "No_連休 = " & DMax("No_連休", "T_連"))
Me.Filter = "ユーザID = '" & str1 & "' And 連休対象 = '" & Me.cmb_連休.Column(0) & "'": Me.FilterOn = True
↑ログインしたユーザIDをstr1に保存している
'------------------------------------
'抽出したレコードから、最初の日を確認する。
No_holi = DMax("No_連休", "T_連")
inc01 = DLookup("[日01]", "T_連", "No_連休 = " & No_holi)
'抽出したデータから、日〜土を抽出する。
days01 = Right(Left(days01, 2), 1) ← 例) 7/25(土) の「土」を抽出したい
'第一週間目のどこに置くか設定する
★ここの部分
If inc01 = "日" Then
ElseIf inc01 = "月" Then
ElseIf inc01 = "火" Then
ElseIf inc01 = "水" Then
ElseIf inc01 = "木" Then
ElseIf inc01 = "金" Then
ElseIf inc01 = "土" Then
End If
End Sub
|
|