
月曜から日曜の作業内容を
書く報告書作成画面の作成をしています。
処理の一つに、
作成したい週の月曜の年月日を入力し、
日曜までの日付を自動的に画面に出す、
というものがあります。
さらに自動的に出した日曜日の日付から、
報告書作成週はその月の第何週かを求める、
(今月ですと10/6は第1週、10/13は第2週、
10/20は第3週、10/27は第4週、となります)
という処理を作成したいのですが、
良いロジックが思い浮かびません。
(処理する月の日付と曜日を配列に入れて、
ループカウントで第何週かを求める、という
方法は思いついたのですが、効率が悪いと思うので…)
何か良いロジックがありましたら、
書き込みをお願い致します。
No.12ベストアンサー
- 回答日時:
usi-itiさんへ
何度も書き込みしてすみません。
それと、お礼欄への書き込みは、全ての回答者には、メールが届かないと思います。
Niiさんへの書き込みを知らない回答者もいるのではないでしょうか?
補足は全員に届くようです。
さて本題です。
Niiさんが書いていらっしゃるのと同じなので、実際のプログラムを書いてみます。
フォームに[Text1],[Label1][Label2],[Label3(0)]~[Label3(6)],[Command1]を作成し、
下記のコードを貼り付けて、実行
Text1に日付(日曜日でなくても構いません)を入力し、コマンドボタンを押す
Label1に月、Label2に週、Label3(0)~Label3(6)に月~日の日付が表示されます。
今回は、Weekday(Wk_Date, vbMonday)としています。
WeekdayにvbMondayと指定すると、月曜日を1として 火曜日=2,水曜日=3,・・・日曜日=7を返します。
(NiiさんのWeekday(年月日,2)と同じです)
Private Sub Command1_Click()
Dim i As Integer
Dim Wk_Date As Date '入力した日付
Dim Wk_Sun As Date '入力した週の日曜日
Wk_Date = DateValue(Text1)
Wk_Sun = Wk_Date + (7 - Weekday(Wk_Date, vbMonday)) '日曜日の日付を求める
Label1 = Month(Wk_Sun) & "月"
Label2 = (Day(Wk_Sun) - 1) \ 7 + 1 & "週目"
For i = 6 To 0 Step -1
Label3(i) = Day(Wk_Sun - (6 - i))
Next i
End Sub
必ず日曜日の日付を入力する場合には
Wk_Sun = Wk_Date + (7 - Weekday(Wk_Date, vbMonday)) '日曜日の日付を求める
は削除するか、
If (Weekday(Wk_date) = 1 ) then 'この場合のWeekdayは日曜日=1になります。
として、日曜日かチェックするようにして下さい。
No.15
- 回答日時:
takntさんへ
う~ん、どうなんでしょう?
そうなのかもしれません。
が、「私の周りでは、10月の2週目の月曜日って何日?」
ときけば、14日と回答が返ってきます。
私は、どちらでもいいですけど・・・
こちらの質問者の週の決め方は、補足にもあった通りなので、
他の質問であげてみたらいかがですか?
usi-itiさんへ
関係のない、回答を何度も繰り返し、すみません。
No.14
- 回答日時:
#6さんへ
>体育の日は10月第2週の月曜日になっていると思いますが・・・
>今年の体育の日は、10月14日ですよね?
つまんない突っ込みですが、体育の日は 第二月曜日であって、第二週目の月曜ではないと思います。
つまり、その月で 2回目の月曜ということだと思うのですが・・・。
No.13
- 回答日時:
ちょっと質問なんですが、
>今年の11月ですと、
>10/28(月)~11/3 (日)…11月第1週
>11/4 (月)~11/10(日)…11月第2週
>10/11(月)~11/17(日)…11月第3週
>11/18(月)~11/24(日)…11月第4週
この場合、10月28日と 入れたら 11月第一週と出ないとダメなんですよね?
11月25日から11月30日の場合は、12月第一週と出ればいいのでしょうか?
No.11
- 回答日時:
すみません、なぜか==になってたり、カレンダーを見間違えて、9/25とか書いてたり、+8では・・・
申し訳御座いません。
とりあえず、
>今年の11月ですと、
>10/28(月)~11/3 (日)…11月第1週
>11/4 (月)~11/10(日)…11月第2週
>10/11(月)~11/17(日)…11月第3週
>11/18(月)~11/24(日)…11月第4週
ですと、
日曜日=年月日-Weekday(年月日,2)+7
月=Month(日曜日)
週=Int(Day(日曜日)*-1/7)*-1
もしくは、
週 =(Day(日曜日)-1)\7+1
でどうでしょう?
後は、
でしたら、月曜日=日曜日-6てな具合でどうでしょう?
No.10
- 回答日時:
月の境目を第何週にするかが明確になっていないので、見当違いの回答をしている可能性がありますが。
>自動的に出した日曜日の日付から
日曜日 = =年月日-Weekday(年月日)+1
>その月の第何週かを求める
月 = =Month(日曜日)
週 = =Int(Day(日曜日)*-1/7)*-1
ではどうでしょう?
9/25~10/5 9月5週
10/6~10/12 10月1週
になると思います。
9/25~10/5 10月1週にしたい場合は、
日曜日 = =年月日-Weekday(年月日)+8
>日曜までの日付を自動的に画面に
は、元になる日曜日から、1づづプラス、もしくはマイナスした値になると思いますが。
>回答者の皆様
色々とありがとうございました。
処理の仕様として、月曜~日曜を
1週間とし、日曜を週の切替日として
作成しております。
今年の11月ですと、
10/28(月)~11/3 (日)…11月第1週
11/4 (月)~11/10(日)…11月第2週
10/11(月)~11/17(日)…11月第3週
11/18(月)~11/24(日)…11月第4週
としております。
この辺の記述が抜けていました。
申し訳ありませんでした。
宜しければ、再度書き込みを
お待ちしております。
No.9
- 回答日時:
#8の回答
???
また、新たな考え方がでてきました。
でも、10/6が1週目で、月曜~日曜日ならその考え方が一番しっくりくるような気もします。
変な解説をつけてしまったのでおかしな話題になってしまいましたが、
月曜日~日曜日を基準に考えた場合を想定し、
日曜日のみ考えた場合には、
1週目の日曜日は(1~7)
2週目の日曜日は(8~14)
・・・・になるので、以下私の#4の回答に続く
に変更してください。この解説なら問題ない?とおもいます。
他の曜日を考えた場合には、先の回答で述べましたが、
考え方により、式が変わります。
No.8
- 回答日時:
やっぱり、駄目でした。
7/1 (月)~ 7/7(日)の場合、
7 \ 7 + 1 で、2週になっちゃいます。
7で割り切れると、バグちゃいます。
日曜日の日を、マイナス1しないと駄目みたいです。。。
No.7
- 回答日時:
日曜日が基準だから、10月の場合、
第1週:9/30 (月) ~ 10/6 (日)
第2週:10/7 (月)~ 10/13(日)
第3週:10/14(月)~ 10/20(日)
第4週:10/21(月) ~ 10/27(日)
第1週:6 \ 7 (=0 少数点以下切捨) + 1 = 1
第2週:13 \ 7 (=1 少数点以下切捨) + 1 = 2
第3週:20 \ 7 (=2 少数点以下切捨) + 1 = 3
第4週:27 \ 7 (=3 少数点以下切捨) + 1 = 4
となると思ったのですが、勘違いでしょうか?!
No.6
- 回答日時:
#4さんへ
体育の日は10月第2週の月曜日になっていると思いますが・・・
今年の体育の日は、10月14日ですよね?
ということは、第2週は8日~14日というのが正しいと思います。
違っていたらすみません。
質問者のusi-itiさんの考え方もあると思いますので、
1週目をカレンダーの1行目とする考え方でしたら#2さんの方法でいいと思います。
(パッと見ただけなので検証はしていません)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) 条件付き書式で文字入力 6 2022/08/29 10:40
- Excel(エクセル) エクセルの条件付き書式について エクセルでカレンダーを作りました。縦に日付が並んでいて、横にスケジュ 3 2022/10/10 15:32
- Excel(エクセル) エクセルでカレンダーを作りたい 5 2023/05/16 07:32
- その他(Microsoft Office) 従業員増減対応で当番種類の増減対応な当番表 21 2022/07/19 07:30
- Excel(エクセル) エクセルの祝日に色が反映しない 4 2022/05/18 09:58
- Excel(エクセル) Excelで日報を自動で作成したい 売上管理シートに入力した売上データを、日報に自動反映させたいと考 1 2023/04/29 18:07
- Java Java、配列の問題を教えて欲しいです。 ・日、月、火、水、木、金、土 ・各曜日の英語 を2次元配列 2 2023/07/10 19:14
- その他(業種・職種) 新聞配達と郵便配達を兼業する新会社は創れないでしょうか? 4 2023/01/26 22:20
- 中途・キャリア 契約社員で在職中ですが、正社員目指して転職活動中です。 20代半ばの男です。 2社から内定を頂きまし 5 2022/04/29 13:39
- Excel(エクセル) Excelシフト表 固定シフトの自動変換化 1 2022/04/14 16:10
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Eclipseの対応する括弧の強調表...
-
エクセルのVBAで日付を検索し転...
-
VBAで当月の1日を表示するには...
-
DataGridViewでyyyy/MM/dd
-
<Access>2つの抽出条件が合致...
-
VBで時間計算
-
人をはめた人は 自分に返ってく...
-
DataGridを使ってデータを表示...
-
経過時間を表示したい
-
ListBoxを選択したデータ編集 ...
-
エクセルのユーザーフォームに...
-
VBAのapplication.ontime メソ...
-
日別集計(その2)
-
GAS ドキュメント
-
ユーザーフォームのラベルに日...
-
指定した日付が、その月の第何...
-
VB6で時刻の範囲に入っているか...
-
[ASP+SQLserver]Varcher形式を...
-
VBAで日付入力しているのですが
-
最近、iPhoneがおかしいです 私...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
エクセルのVBAで日付を検索し転...
-
ユーザーフォームのラベルに日...
-
DataGridViewでyyyy/MM/dd
-
Eclipseの対応する括弧の強調表...
-
【Excel VBA】条件に合った行の...
-
VisualBasic6.0のFormat関数で...
-
システム日付とは?
-
【VBA】土日をスキップして日付...
-
テキストボックスにカレンダー...
-
指定した日付が、その月の第何...
-
今日より前の書き方 マクロ
-
VBAで日付入力しているのですが
-
VBでDate型の大小比較がうまく...
-
JSPからYYYYMMDDで日付入力する
-
VBA 日付、未来の日付はエラー...
-
テキストボックスに今日の日付...
-
「eclipseで作るカレンダー(ス...
-
VB 日付範囲チェック
-
VBAで当月の1日を表示するには...
-
1本あたり○円と表示する時どの...
おすすめ情報