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

EXCEL VBA で 以下のように 同値 を >で比較した結果 なぜか 真が返ってきます。
なぜでしょうか?
詳しい方、ご教授願います。
RelTime、STD_Time共にDATE型です。

?RelTime
7:50:00
?STD_Time
7:50:00
?RelTime > STD_Time
True

A 回答 (2件)

>RelTime、STD_Time共にDATE型です



もですけど、それぞれに代入している順序が『RelTime』の方が後だったりはしないですか?
仮にそうならデータでは見れてないミリ秒単位での違いかな?とも感じますけど?(ただの勘です)

DATE型からSTRING型に変換させて比較したら、値も "7:50:00" とミリ秒単位は含まないようにも思えますけど。

https://vbabeginner.net/vba%E3%81%A7%E6%97%A5%E4 …

それぞれを文字列に変換して試してみるとか?
?Format(RelTime , "hh:mm:ss") > Format(STD_Time , "hh:mm:ss")

外れてたらごめんなさい
    • good
    • 0
この回答へのお礼

お礼が遅くなりましたが、ご指摘の方法で解決しました。
ありがとうございます。

お礼日時:2019/06/22 10:02

>同値 を >で比較した結果


と書かれていますが、
まず、 RelTime, STD_Time はどこから得た数字なのか説明抜きでは、よく分かりません。
イミディエイトウィンドウ内で、検査しても、実際のVBAのプログラミング上の問題ではありませんから、こちらの想像の範囲でしかありません。

ただ、「同値」とおっしゃるなら、その数値を出したプロセスを見なければなりませんが、同じプロセスで得た数字でしたら、同値になるのですが、理論的にいって、浮動小数点演算ですから、プロセスが違えば、ここに正確な計算は出てきません。

もし計算をさせるのでしたら、Date 型ではなく、10進型するか、小数点6位を四捨五入するのがよいのではないかと思います。Currency型ですと、桁が足りないような気がします。

Sub Test1()
Dim a As Date, b As Double, c As Double
Dim bln As Boolean
Dim bln2 As Boolean
a = Time
b = CDec(a) '10進型にする。
bln = (a = b) '必ず違いが出るはず
b = Int(b * 10 ^ 6 + 0.5) / 10 ^ 6  '四捨五入
c = Int(a * 10 ^ 6 + 0.5) / 10 ^ 6
bln2 = (b = c)
End Sub
    • good
    • 0
この回答へのお礼

お礼が遅くなりましたが、ご指摘の方法で解決しました。
ありがとうございます。

お礼日時:2019/06/22 10:02

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