
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で質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Visual Basic(VBA) Excel vbaについての質問 3 2023/04/18 16:14
- PHP 共通の処理をまとめる方法がわからないのでアドバイスお願いします。 1 2022/12/19 20:20
- Access(アクセス) ExcelのVBAコードについて教えてください。 4 2023/01/20 09:44
- Visual Basic(VBA) ①ExcelVBAでカレンダーを作り、別のユザーフォームで日付を入力したいのですがエラーになります。 1 2023/02/17 18:39
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) シートを選択して、1つのPDFにしたいのですが。 5 2022/10/03 20:18
- Visual Basic(VBA) Excel VBA でデータ転記について 1 2023/03/07 19:11
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
C# 計算処理中に実行中ウィン...
-
[急募]Pythonについてです。
-
排他的論理和 BCC(水平パリテ...
-
VBAの再計算が反映されない件に...
-
数値計算の高速化 (cos, sin, exp)
-
エクセルで特定のセルのみを任...
-
切り上げたい
-
モジュラス103の計算とは何でし...
-
Matlabでのinverse(逆関数)の...
-
アセンブリ言語で0x4(%esp)の...
-
チェックデジット計算できる関...
-
Vba Cells.Findについて教えて...
-
階乗のマクロ
-
スレッド処理からダイアログを...
-
ファイルから数式を読み込む
-
CRC8を教えてください
-
Delphi で動的な計算式の答えを...
-
2次元ラプラス方程式を差分法で...
-
C言語初心者。静磁場の計算。台...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
排他的論理和 BCC(水平パリテ...
-
EXCELなどで「返す」という表現
-
変化させるセルが変化しない
-
エクセルで特定のセルのみを任...
-
CとFORTRANの計算速度はどちら...
-
モジュロ
-
バッチファイルでウインドウを...
-
Visual C++でdebugとreleaseで...
-
y=(x^2 +3x+1)^4を微分の定義を...
-
入射角反射角
-
スレッド処理からダイアログを...
-
60進数の四則計算
-
Javaと他言語比較について
-
VBAで関数をつくる
-
C言語 Σをつかったプログラム
-
CRC8を教えてください
-
C言語についてです。 再帰を使...
-
C言語について 下の画像は do-w...
おすすめ情報