
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で質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
文字コードの%E3%80%とは何です...
-
Excel VBAでPDFファイルをMicro...
-
CString から LPCTSTRの型に変換
-
Jcodeのtrが遅いので代替のプロ...
-
2ちゃんねる用語 香具師ってな...
-
エクセルで数値を全角文字(カ...
-
CSVファイルの中で、「 , 」カ...
-
openoffice calcで#DIV/0! の...
-
秀丸エディタで、「-」や「ー」...
-
いまスマホからカードの申込み...
-
正規表現で、特定の文字列を含...
-
全角入力
-
【ExcelVBA】英数記号の半角変換
-
何故、日本は未だに数字を3桁...
-
WORDで改ページすると時々グレ...
-
マクロを使ってフォルダー内に...
-
データグリッド内の数値をカン...
-
splitの逆の処理
-
【至急!!!!!】ランダム桁数を正...
-
BASP21によるbase64のデコード...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excel VBAでPDFファイルをMicro...
-
文字コードの%E3%80%とは何です...
-
CString から LPCTSTRの型に変換
-
エクセルでの漢字(全角ひらが...
-
SQLのデータで半角カナを全角に...
-
ローマ字からカナに変換する方...
-
CString型からdouble型への変換
-
VBScript文字列をSJISからUTF8...
-
VBScript 全角英数記号→半角英...
-
SJIS->UTF8->SJISコード変換に...
-
VB6にも「ToString」ってあり...
-
ファイル名の右側を変更したい ...
-
【PHP】全角記号を半角記号...
-
ウイザードからのVBAでクエリー...
-
文字化けしてしまって困っています
-
ubuntuの文字化け解消方法
-
Kシェルでの文字型→数値型変換
-
改行を含んだ文字列を正規表現...
-
テキストをhtml変換するには
-
漢字からカタカナ変換マクロ
おすすめ情報