Dim gStr_GrpSDate as String
Dim gStr_GrpEDate as String
gStr_GrpSDateに 2004/02/01 01:00
gStr_GrpEDateに 2004/02/02 24:00
が入っている場合,
Int_DayDiff = DateDiff("d", gStr_GrpSDate, gStr_GrpEDate)
のようにDateDiff関数を使用できたら良いのですが
(1)型がString
(2)gStr_GrpEDateの時刻が24時の為DateDiff関数(Date関数も)が使えない。
等の問題がありうまく処理できません。
このような場合,日付の差を取得するにはどのようにしたら
良いのでしょうか?
よろしくお願い致します。
No.3ベストアンサー
- 回答日時:
以前の質問は解決?
同じような質問ですよ。
Sub Test()
Dim gStr_GrpSDate As String
Dim gStr_GrpEDate As String
Dim l_lng分差分 As Long
Dim l_lngWk As Long
Dim l_lng日 As Long
Dim l_lng時 As Long
Dim l_lng分 As Long
Dim l_strMsg As String
gStr_GrpSDate = "2004/02/01 01:00"
gStr_GrpEDate = "2004/02/02 150:00"
l_lng分差分 = 分差分(gStr_GrpSDate, gStr_GrpEDate)
l_lng日 = l_lng分差分 \ (24 * 60)
l_lngWk = l_lng分差分 Mod (24 * 60)
l_lng時 = l_lngWk \ 60
l_lng分 = l_lngWk Mod 60
l_strMsg = l_lng日 & "日 " & Format(l_lng時, "00") & ":" & Format(l_lng分, "00") & vbCrLf & vbCrLf
l_strMsg = l_strMsg & "の差分" & vbCrLf
MsgBox l_strMsg
End Sub
Function 分差分(ByVal p_data1 As String, ByVal p_data2 As String) As Long
Dim l_dat1 As Date
Dim l_dat2 As Date
Dim l_lngRet As Long
l_dat1 = 日付変換(p_data1)
l_dat2 = 日付変換(p_data2)
'分で差分を求める
分差分 = Abs(DateDiff("n", l_dat2, p_data1))
End Function
Function 日付変換(ByVal p_data As String)
Dim l_varWk As Variant
Dim l_dat As Date
l_varWk = Split(p_data, " ")
l_dat = CDate(l_varWk(0))
If UBound(l_varWk) > 0 Then
l_dat = DateAdd("n", 分変換(CStr(l_varWk(1))), l_dat)
End If
日付変換 = l_dat
End Function
Function 分変換(p_data As String) As Long
Dim l_varWk As Variant
l_varWk = Split(p_data, ":")
分変換 = (CLng(l_varWk(0)) * 60) + CLng(l_varWk(1))
End Function
遅くなってスミマセンでした。
ソースの提供ありがとうございます。
上記のソースで理解することが出来ました。
ありがとうございました。
No.2
- 回答日時:
そのデータは年月日時分秒の書式になっていますか?もし'24:00'としかないのであれば'24:00:00'としてみて下さい。
また、24:00は基本的には翌日の00:00ですので、00:00分として一度試してみて下さい。デバッグウィンドウを使えば簡単に確認できますよね?
それで上手くいったら、データをチェックして固定フォーマットになるよう文字列操作してからCDate()関数に通せば上手くいきます。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- MySQL ある時間以内の利用者の抽出について 3 2022/03/26 11:15
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) VBAのユーザーフォームのテキストボックスに入力制限をしたい 6 2022/11/15 08:28
- Excel(エクセル) Excelにて、フォルダ内のTextファイルをマクロで統合すると文字化けしてしまう時の解消コード 4 2023/01/01 07:32
- Visual Basic(VBA) ExcelからAccessのテーブルに書き込む時に時間がかかる 1 2022/10/14 20:38
- Visual Basic(VBA) 特定の文字を含むシートだけマクロ処理をしたい 1 2023/05/22 01:43
- Visual Basic(VBA) 【ご教示ください】VBAの記述方法がわかりません。 2 2022/08/12 21:28
- Visual Basic(VBA) VBA 変数が思うように機能しません。ご教授願います。 7 2022/08/14 13:50
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
SJIS->UTF8->SJISコード変換に...
-
文字コードの%E3%80%とは何です...
-
VBScript文字列をSJISからUTF8...
-
文字化けしてしまって困っています
-
SQLのデータで半角カナを全角に...
-
Visual Studio プロパティペー...
-
テキストをhtml変換するには
-
LINUX上でシリアル通信(C++)
-
CSVファイルをTSV形式に変換
-
Pythonについて。
-
CSVファイルの中で、「 , 」カ...
-
エクセルで数値を全角文字(カ...
-
プログラミングでは、半角括弧...
-
「何とかで始まり、何とかで終...
-
エクセルにMicrosoft Barcode C...
-
英数字のみ全角から半角に変換
-
EXCELからCSVにすると余計なカ...
-
IEからEdgeへの移行に伴うIMEの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
r18文学賞は文字数ではなく、枚...
-
Pythonについて。
-
CString から LPCTSTRの型に変換
-
Pythonについて。
-
テキストをhtml変換するには
-
SJIS->UTF8->SJISコード変換に...
-
シャープ(#)の受け渡し
-
gccでiconvを使った文字コード...
-
VBScript 全角英数記号→半角英...
-
【PHP】全角記号を半角記号...
-
ローマ字からカナに変換する方...
-
日付をシリアル値に変換
-
VB6にも「ToString」ってあり...
-
Visual Studio プロパティペー...
-
VBScript文字列をSJISからUTF8...
-
改行を含んだ文字列を正規表現...
-
SQLのデータで半角カナを全角に...
-
漢字からカタカナ変換マクロ
おすすめ情報