|
▼たまお さん:
こんにちは。
申し訳ないのですが、仕様をずらずらと書かれていても
当方にはあまり理解できないので
一部分だけですが回答をさせて頂きます。
>連結:日01、D01、CC01、日02、・・・17日分
>Me.日01.ControlSource = 日01
>Me.DD01.ControlSource = D01
>Me.CC01.ControlSource = CC01
>
>For文を使ってまとめられる方法はないでしょうか?
For i = 1 to 17
Me.Controls("日" & Format(i, "00")).ControlSource = "日" & Format(i, "00")
Me.Controls("DD" & Format(i, "00")).ControlSource = "DD" & Format(i, "00")
Me.Controls("CC" & Format(i, "00")).ControlSource = CC" & Format(i, "00")
Next i
コントロール名とコントロールソース名が一緒ですと
誤作動を発生させる可能性があるので、
テキストボックスの名前は例えば txt日01 とかにしておいた方が無難かもしれませんね。
> Dim inc01 As Variant '最初に設定した日付を記憶
> Dim days01 As Variant '曜日を確認する
> No_holi = DMax("No_連休", "T_連")
> inc01 = DLookup("[日01]", "T_連", "No_連休 = " & No_holi)
>
> '抽出したデータから、日〜土を抽出する。
> days01 = Right(Left(days01, 2), 1) ← 例) 7/25(土) の「土」を抽出したい
以下は強制ではありませんが…。
まず、No_holi のデータ型はどうなっているのでしょう?(恐らく数値型かな)
変数:inc01、days01 についてもVariant型で宣言している為、
コードが見づらいモノになってしまってないでしょうか。
当方であれば、T_連 の 日01 フィールドのデータ型を日付型にして
テキストボックスの書式で m/d(aaa) と設定し表示させ、
VBA のコードでは日付型で受ける方法を取ると思います。
曜日を抽出したければ Format関数で Format([日付],"aaa") で可能ですし、
そもそも
> If inc01 = "日" Then
>
> ElseIf inc01 = "月" Then
>
> ・・・
の箇所ではWeekday関数で数値だけ取ってくれば処理が可能かと思われます。
更にSelect Case 文と合わせて(日01 が日付型だとします)
Dim No_holi As Long
Dim inc01 As Date
'抽出したレコードから、最初の日を確認する。
No_holi = DMax("No_連休", "T_連")
inc01 = "#" & DLookup("[日01]", "T_連", "No_連休 = " & No_holi) & "#"
Select Case Weekday(inc01)
Case 1 '----日曜日----
Case 2 '----月曜日----
・
・
・
Case 7 '----土曜日----
End Select
のような使い方ができるのではないでしょうか。
|
|