プロが教えるわが家の防犯対策術!

現在の時刻と開始時刻から、経過時間を表示したいです。
現在の時刻は16時30分だったら、16:30
開始時刻は12時15分だったら、12:15という変数があります。
答えで4:30という数字が欲しいです。
経過時間は24時間以下を考えれば良いです。

A 回答 (4件)

答えは4:15では?!というのは置いておいて、「12:15という変数」の型が何なのか謎ですが、String型になっていて単純に計算できなくて困っているんじゃないかと想像して回答します。



CDateで型を日付型に変換してやれば、あとは足し算引き算可能です。
    • good
    • 0
この回答へのお礼

ありがとうございます。
答えは、4:15ですね。
CDateにしてみたのですが、答えの変数Aが少数点で表示されてしまいます。
A=CDate(Time)-CDate(Time_Start)

お礼日時:2012/06/18 17:21

Format関数では?


Dim 差
差 = Time - CDate(開始時刻)
経過時間 = Format(差, "hh:nn")
    • good
    • 1

A=CDate(CDate(Time)-CDate(Time_Start))


でいいような。。。

?cdate("1:42:33")-cdate("1:42:17")
1.85185185185191E-04

?cdate(cdate("1:42:33")-cdate("1:42:17"))
0:00:16
文字列で扱いたければさらにcstr()で囲む。
    • good
    • 0

No1の者ですが


A=CDate(Time)-CDate(Time_Start)
の結果、Aが小数になってしまうという問題についてです。

変数Aの型が何になっているのか謎ですが「答えで4:30という数字が欲しい」ということなのでNo2さんの回答のようにformat関数を使うと簡単です。

A=Format(CDate(Time)-CDate(Time_Start),"hh:mm")

format関数が邪魔であれば変数AをDate型で定義してやればよいかと思います。


ちなみに変数Aに小数が入っていることについてですが、VBの日付型というのは整数+小数で管理しており、整数部で日数を、小数部で時間を管理しています(Excelなどで日付を入力したセルを数値表示すると分かると思います)。今回は日数はゼロですので0.xxxという小数が変数Aに入ってきます。
    • good
    • 0

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