hirotonさんの提示したテーブルのような形にしない限りは、簡単にはならないと思います。
どのようなUIなのか不明なので、
フォーム上に「日付」と「単価」というテキストボックスがあると仮定すると、
下記のようなコードで期待する結果にはなります。
Private Sub 日付_AfterUpdate()
Dim res
res = DLookup("単価", "単価マスタ", "#" & Me.日付 & "# Between 開始日 AND 終了日")
If IsNull(res) Then
res = DMax("開始日", "単価マスタ", "#" & Me.日付 & "# >=開始日 AND 終了日 Is Null")
If Not IsNull(res) Then
Me.単価 = DLookup("単価", "単価マスタ", "#" & res & "#=開始日")
End If
Else
Me.単価 = res
End If
End Sub
hirotonさんの提示したテーブルなら、下記の1行のコードで済みます。
Me.単価 = DLookup("単価", "単価マスタ", "#" & Me.日付 & "# Between 開始日 AND 終了日")
通報 ...