• 締切済み

エクセル・時刻に関する質問

添付画像のようなエクセルで以下の標準モジュールを作っています。 Sub test001() If Cells(2, 2) = TimeValue("9:00:00") Then MsgBox ("9:00:00認識しました") Else MsgBox ("9:00:00認識しませんでした。") End If If Cells(3, 2) = TimeValue("9:05:00") Then MsgBox ("9:05:00認識しました") Else MsgBox ("9:05:00認識しませんでした。") End If If Cells(3, 2) = 0.378472222222222 Then MsgBox ("2回目9:05:00認識しました") Else MsgBox ("2回目9:05:00認識しませんでした。") End If If Cells(4, 2) = TimeValue("9:10:00") Then MsgBox ("9:10:00認識しました") Else MsgBox ("9:10:00認識しませんでした。") End If If Cells(5, 2) = TimeValue("9:15:00") Then MsgBox ("9:15:00認識しました") Else MsgBox ("9:15:00認識しませんでした。") End If If Cells(6, 2) = TimeValue("9:20:00") Then MsgBox ("9:20:00認識しました") Else MsgBox ("9:20:00認識しませんでした。") End If End Sub 実行すると、9:05:00 だけが、「9:05:00認識しませんでした。」となります。 時刻以外は同じ内容のはずですが 9:05:00 だけ認識されません。 解決策をお願いします。

みんなの回答

  • mu2011
  • ベストアンサー率38% (1910/4994)
回答No.3

時刻シリアル値では難しい。(小数点以下は近似値の誤差がある) 一例です。 If Format(Cells(3, 2), "h:mm") = "9:05" Then、 又は、If Cells(3, 2).Text = "9:05" Thenで如何でしょうか。

  • kmee
  • ベストアンサー率55% (1857/3366)
回答No.2

If Cells(3, 2) = TimeValue("9:05:00") Then MsgBox ("9:05:00認識しました") Else MsgBox ("9:05:00認識しませんでした。") End If If Cells(3, 2) = 0.378472222222222 Then MsgBox ("2回目9:05:00認識しました") Else MsgBox ("2回目9:05:00認識しませんでした。") End If と2つあるけど、どっち?

  • f272
  • ベストアンサー率46% (8467/18126)
回答No.1

比較するときは,整数ではないときは eps = 0.000001 If Abs(Cells(3, 2) - TimeValue("9:05:00")) < eps Then のようにします。 ここでepsは許容できる誤差の上限です。

関連するQ&A