一番近い未来の平日を求める関数

解決


讃岐  2007-02-03 04:45:13  No: 135121

一番近い未来の平日を求める関数

一番近い未来の平日を求めるにはどうすればいいでしょうか?
引数として時分(例、"20:30"という文字列)
を与えて一番近い未来の平日(月曜から金曜)の日時を返すような関数を作っているのですが、なかなかうまくいきません。

例えば、"20:00"いう時分を表す文字列データを引数として渡すと、現在の時刻が"2007/2/2 19:30:00"のときは、日付型のデータ"2007/2/2 20:00:00"を返し、現在の時刻が"2007/2/2 20:30:00"のときは、来週の月曜日である"2007/2/5 20:00:00"を返すような関数です。

宜しくお願い致します。


大吉末吉  2007-02-03 05:38:12  No: 135122

(1)今日の指定時刻("20:00")をDate型で生成して、変数へ
  例:「Taregt=CDate(Format(Now,"yyyy/mm/dd") & " "  & 指定時刻)」とか・・・
(2)今の時刻を過ぎていたら(5)へ。
(3)Targetの曜日を求める。
    「WeekDay関数」とか・・・
(4)土日でなければOK!
(5)+1日する
    「DateAdd関数」とか・・・
(6)(3)へ戻る。

とかでは、どうでしょう?
#例は、VB6の場合。


讃岐  2007-02-03 07:12:23  No: 135123

ありがとうございます。早速、ご教授いただいた方法で次のようなプログラムを作ってみたところ、無事に所望の関数が出来ました。
ありがとうございました。

Public Function 一番近い平日の日時を求める(時分 As Date) As Date
    Taregt = CDate(Format(Now, "yyyy/mm/dd") & " " & 時分)
    If DateDiff("s", Now, Taregt) < 0 Then
        Taregt = DateAdd("d", 1, Taregt)
    End If
    曜日 = WeekDay(Taregt)
    Do While (曜日 = 1) Or (曜日 = 7)
        Taregt = DateAdd("d", 1, Taregt)
        曜日 = WeekDay(Taregt)
    Loop
    一番近い平日の日時を求める = Taregt
End Function


讃岐  2007-02-03 07:35:14  No: 135124

失礼しました。「解決」にチェックを入れるのを忘れていました;;


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加