• ベストアンサー

VBAで今の時刻から最新の設定時刻のプログラムを起動させたい

VBAでアプリケーションをつくっています。 時刻をいくつか設定し、その時刻ごとに印刷をかけさすというものです。 それを起動させる人間が何時に起動させるかが定まらないんですが、何時に起動しても、起動した瞬間に、その時刻に印刷されているべきものが印刷できるように(つまり、起動した瞬間、過去になっている時刻で一番新しい時刻の印刷ができるように)するには、どう組んだら良いのでしょうか。 「この時刻以前」というような意味の関数ってあるのでしょうか。 面倒な質問かと思いますが、何か良い方法がありましたらお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
  • Kyuun
  • ベストアンサー率77% (14/18)
回答No.1

このVBAアプリケーションは、Excelでしょうか?それともAccessでしょうか? □□□ 処理イメージ □□□ 9:00 11:00 14:00 と、登録されている場合、現時刻が13:00であれば、11:00を取得したい。 このように、受け取りましたが、あっていますでしょうか? であれば ■Excelの場合  1.各時刻は、シートに登録されていると想定します  2.フィルター機能を使用し、起動時刻以下のみにする  3.一番最後の時刻を取得する   ※コードはマクロの記録を参照してください ■Accessの場合  1.各時刻はテーブルに登録  2.集計クエリで、「Where条件」と「最大」の2つの項目を指定  3.「Where条件」に <=現時刻 を指定する ではいかがでしょう? 見当違いでしたらごめんなさい

noname#101292
質問者

補足

丁寧なご回答をありがとうございます。 言葉足らずで申し訳ありません、Excelです。 私の質問の意味はおっしゃる通りです。 時刻は、現在はプログラムの中に書かれているもので実行していますが、 おっしゃるようにシートに登録してあるもので動かせれば 何よりだと思っています。 いかんせん、シート内容から日時を取得して プログラムに組み込む方法がわからなくて・・・。

その他の回答 (1)

  • Kyuun
  • ベストアンサー率77% (14/18)
回答No.2

No1です。 では、こんな感じではいかがでしょう? (マクロの記録を使って、一部手直ししたものです。) sheet1のA列に時刻を登録しました。 Function Get_Time() As String Sheet1.Activate Selection.AutoFilter Field:=1 '-- 「すべて」にしておく Selection.AutoFilter Field:=1, Criteria1:="<=" & Format(Now(), "hh:mm"), Operator:=xlAnd Range("A1").Select Selection.End(xlDown).Select Get_Time = Format(ActiveCell.Value, "hh:mm") End Function

noname#101292
質問者

お礼

ありがとうございました。 勉強して理解しようとしていたため お礼が遅くなりすみませんでした。 参考にさせていただきます。

関連するQ&A