
No.3ベストアンサー
- 回答日時:
こんにちは。
itohhといいます。たしかに、Date型だと上手く計算できません。
でも、経過時間を計算してくれる関数(DateDiff)を併用するとうまくいきますよ。
例.
Dim wTime As Date
Dim Keika As Date
Dim wBuf As String
Dim wNow As Date
wTime = DateValue("2001/7/16")
wNow = Now
Keika = wNow - wTime
wBuf = DateDiff("h", wTime, wNow) & Format(Keika, ":nn:ss")
No.4
- 回答日時:
どもども田吾作7です。
'日付
Dim wkDate1 As Date
Dim wkDate2 As Date
'差計算ワーク
Dim wkRefDate As Date
'時間計算ワーク
Dim wkHour As Long
'最後に時間を得る文字列
Dim wkStrDate As String
'時間セット
wkDate1 = "2001/7/16 12:00:00"
wkDate2 = "2001/7/15 11:35:21"
'差を求める
wkRefDate = wkDate1 - wkDate2
'時間の算出
wkHour = (Int(wkRefDate) * 24) + Hour(wkRefDate)
'文字列としてセット
wkStrDate = wkHour & ":" & Format(Minute(wkRefDate), "00") & ":" & Format(Second(wkRefDate), "00")
'イミディエイトウィンドウに出力
Debug.Print wkStrDate
ッて感じかな?
DateDiffって使ったこと無いけど、1時間多く計算されるのかな?
実験してみたら、常に一時間大きい値を出してた。実験の仕方が悪いのかな?
うーむDateDiff・・・奥が深い・・・
回答ありがとうございました。ちゃんと動作しました。
常に1時間多く計算されるとのことですが、まだ確認していませんので、
これからやってみたいと思います。
ポイントあげられなくてすみません。
(全員にあげられるように、チェックボックスにすればいいのに・・)
No.2
- 回答日時:
dim Time as Date
dim Keika as Date
dim hh as long
Keika = Now - Time
の後に
hh = clng(Month(Keika)) * 24 '時間
cstr(hh) & ":" format$(Keika,"mm:ss")
でOKでしょう。
コードはチェックしてません。ご了承ください。
ちなみに
>Date型は23:59:59の範囲しかダメなんですよね・・・・。
その通りです。
それから(余談)
str = d * 24 + h & ":" & Format(m, "00") & ":" & Format(s, "00")
は
str = cstr(d * 24 + h) & ":" & Format$(m, "00") & ":" & Format$(s, "00")
と型をそろえた方が良いと思います。
回答ありがとうございました。ちゃんと動作しました。
ポイントあげられなくてすみません。
(全員にあげられるように、チェックボックスにすればいいのに・・)
余談も参考になりました。。。。
No.1
- 回答日時:
Keikaには24時間以上の部分も日数として入っていますが、24時間以上は日数として別にするしかありませんが。
表示はちょっとスマートじゃありませんが、こんな感じでいかが?
Dim d As Long, h As Long, m As Long, s As Long
Dim str As String
h = Hour(Keika) ' 時
m = Minute(Keika) ' 分
s = Second(Keika) ' 秒
d = Int(Keika) ' 日
str = d * 24 + h & ":" & Format(m, "00") & ":" & Format(s, "00")
一番最初に回答してくれてありがとうございました。
このソースコードでちゃんと動きました。
自分も、このようにもっと柔軟に考えられたらなぁと。。。。。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
EXCELなどで「返す」という表現
-
matlab計算での進捗状況を知りたい
-
matlabで計算終了
-
階乗のマクロ
-
VBAで関数をつくる
-
Sparse matrix 計算
-
引き放し法による除算アルゴリ...
-
NW7のチェックディジットについて
-
60進数の四則計算
-
関数電卓をc言語でつくりたいの...
-
スレッド処理からダイアログを...
-
変化させるセルが変化しない
-
C言語についてです。 再帰を使...
-
入射角反射角
-
VB6で正確なミリ秒を計測したい...
-
数値計算の高速化 (cos, sin, exp)
-
モジュロ
-
タクシー料金の問題です
-
Visual C++でdebugとreleaseで...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報