アプリ版:「スタンプのみでお礼する」機能のリリースについて

月曜から日曜の作業内容を
書く報告書作成画面の作成をしています。
処理の一つに、
作成したい週の月曜の年月日を入力し、
日曜までの日付を自動的に画面に出す、
というものがあります。
さらに自動的に出した日曜日の日付から、
報告書作成週はその月の第何週かを求める、

(今月ですと10/6は第1週、10/13は第2週、
10/20は第3週、10/27は第4週、となります)

という処理を作成したいのですが、
良いロジックが思い浮かびません。
(処理する月の日付と曜日を配列に入れて、
ループカウントで第何週かを求める、という
方法は思いついたのですが、効率が悪いと思うので…)

何か良いロジックがありましたら、
書き込みをお願い致します。

A 回答 (15件中11~15件)

No4の方への疑問ですが・・・。


>#1さんや、#3さんの補足になってしまいますが、
>第1週目は 1~7日
>第2週目は 8~14日

ちなみに 今月(10月)の第二週目は 6日から12日だと思うのですが、
違うのでしょうか?
    • good
    • 0

>作成したい週の月曜の年月日を入力し、日曜までの日付を自動的に画面に出す、



Private Sub Command1_Click()
Dim wk_date As Date
wk_date = DateValue(Text1) 'テキストから日付を取り出す
For i = 0 To 6
Label1(i) = Day(wk_date) + i
Next i
End Sub

のような感じでいいでしょうか?

>さらに自動的に出した日曜日の日付から、報告書作成週はその月の第何週かを求める、

#1さんや、#3さんの補足になってしまいますが、
第1週目は 1~7日
第2週目は 8~14日
・・・・
これは月の初めが何曜日でも変わらないと思いますので
int((day(日付)-1)/7)+1
または
(day(日付)-1)\7+1
#3さんの方法は、7日の場合2週目になってしまうと思います。
    • good
    • 0

最初に答えられた方と同じですが。

以下でどうでしょうか?

何週目か? = 日曜日の日付 \ 7 + 1

除算を「/」でなく、「\」にすると、少数点以下を切り捨ててくれます。
    • good
    • 0

まず Weekday 関数を用いて1日の曜日の数字を求めます。


その数字をマイナス1して、知りたい日(日曜日)に足します。
足した数字を7で割って小数点以下を切り捨て、+1すると でてくると思います。

そんなに検証してないので、抜けがあるかもしれません。
    • good
    • 0

日-1を7で割って、小数以下を切り捨てて、+1する、では駄目?

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!