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

MS-Access2000を使っています。
テーブルに時間が指定してあり、その時間幅に合わせて文字列を検索したいと考えています。
Excelのlookup のように対象の値を入れると同数以外は前の(上の)数字を検索するという処理をしたいのです。
しかし、VBA内ではVlookupは無く、DLookupとなり値が同数でなければ「null」を返してきます。
何か良い方法はあるでしょうか?ぜひ、回答をよろしくお願い致します。

VBAでの関数
temp = DLookup("表記", "T_時間帯", "開始 = #" & Me.時間帯 & "#")

T_時間帯
開始 表記
9:00  午前中A
10:30 午前中B
13:00 午後A
15:00 午後B


*9:30をMe.時間帯に入れておくと検索値を「9:00」としたい
*12:59Me.時間帯に入れておくと検索値を「10:30」としたい
*13:00Me.時間帯に入れておくと検索値を「13:00」としたい
*17:00Me.時間帯に入れておくと検索値を「15:00」としたい

A 回答 (2件)

temp = dmax("表記", "T_時間帯", "開始 <= #" & Me.時間帯 & "#")


でどうですか?
    • good
    • 0
この回答へのお礼

ありがとうございました。「開始」の最初を検索して、その中から最大値の値が目標とする答えなんて、考えもつきませでした。
昨日の夕方に回答を見て作成しまして、とりあえず形になりました。御礼が遅れてすみません。本当にありがとうございました。

お礼日時:2013/04/03 14:14

select case で処理してはどうでしょうか?



参考までにコードを。
15:00以降から9:00未満はElseで処理しています。



'timev=入力された時間値

'SearchTime=検索時使用する丸めた(切り上げた)時間値


Select Case True

Case timev >= #9:00:00 AM# And timev < #10:30:00 AM#
SearchTime = #9:00:00 AM#

Case timev >= #10:30:00 AM# And timev < #1:00:00 PM#
SearchTime = #10:30:00 AM#

Case timev >= #1:00:00 PM# And timev < #3:00:00 PM#
SearchTime = #1:00:00 PM#

Case Else
SearchTime = #3:00:00 PM#

End Select
    • good
    • 0
この回答へのお礼

回答をありがとうございました。
そうですね。対象外をelseにしてselect caseを使っても良かったのですね。
切羽詰っていましたので、どうも思った以上のことは出来なかったようです。
今後の参考になると思いますので、私のライブラリに保管しておきます。ありがとうございました。

お礼日時:2013/04/03 14:17

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

関連するカテゴリからQ&Aを探す