![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
>日付データはありませんので、時間だけで計算したいのです.
これは乱暴なはなしですよね。翌々日の場合とか、朝8時に入室し、9時に退室する場合と、翌日あさ9時に退室する場合が区別できない。午前4時で全員退室の仮定をおき、0-4時は24時間足した時間から引き算するとかどうですか。
25:30と入れる(表現する)のも、一般になじみがないのでは。
エクセルVBAはセルの値を主に計算しますので、エクセルの時刻の表し方、扱い方にあわせて、VBAコードを組み立てないとしょうがないでしょう。
B11に23:30
B12に25:30:00
の場合
例えば25時30分はセルの値では、1.062500 になるから
Sub test02()
Range("B15") = Range("B12") - Range("B11")
End Sub
B15の値は0.083333333
時刻表示では=B15*24の2 のように考える。
No.4
- 回答日時:
元のデータはどこに入力されているのでしょうか?
VBAでは24時を越える時刻は許容されませんが
ワークシート上なら25:30というのもOKです
内部的には翌日の1:30として格納されます
No.3
- 回答日時:
こんにちは。
それは、代入値の入れ方の問題ですね。
なるべく、セルから入力して、それをDate型にしないで、Double型で扱うとうまくいくはずです。ただ、この場合、最初から、Rangeオブジェクトのプロパティを、Value2 にすると、楽に出来ます。
VBAで、日付や時間を、そのまま、Date型の変数に文字列代入というのは、ある程度の経験のある人ならしないはずです。コーディングだけだったら、日付型のリテラル値を使いますが、それも、今回は使えません。
それで、やむを得ず、Excelに備えられている Evaluate関数を使用してみました。VBなら、おそらく、一旦、「:」を区切り文字にして、時間と分を分離して行うことになるかと思います。最後まで、その解は、VBAの中では、中途半端な形のままで、文字列としてしか扱うことが出来ないように思います。出来れば、ワークシートの中で行ったほうがよいです。VBA上だけですと、これは、なかなか、難しい内容ですね。
----------------------------------------------------------
Sub HoursColculate()
Dim input1 As String 'テキストボックスなどから
Dim input2 As String ' ""
'
Dim a As Double '入室時間
Dim b As Double '退室時間
Dim x As Double '滞在時間
'
Dim d As String
input1 = "23:00" '代入値
input2 = "25:30" '代入値
If IsDate(input1) Then
a = CDate(input1)
Else
a = Evaluate("=" & "(""" & input2 & """)*1")
End If
If IsDate(input2) Then
b = input2
Else
b = Evaluate("=" & "(""" & input2 & """)*1")
End If
If b >= a Then
x = b - a
Else
MsgBox "マイナスの計算できません": Exit Sub
'ただし、ここは、Abs にしても良い。
End If
If x < 1 Then
d = Format$(CDate(x), "hh:mm")
Else
d = CStr(Int(x * 24)) & ":" & Format$((x - Int(x * 24)) * 60, "00")
'ここの行で、文字列によって端数が切り捨てになっています。
End If
MsgBox d
End Sub
No.2
- 回答日時:
#1の方のとおり日付をつけないとコンパイルエラーになりますね
23:59:59を超える場合には日付を+1して演算すればうまくいきます
Dim a As Date '入室時間
Dim b As Date '退室時間
Dim x As Date '滞在時間
a = "1900/1/1 23:00"
b = "1900/1/2 2:30"
x = b - a
No.1
- 回答日時:
エクセルでの時間計算は、すべての時間を数値に置き換えて計算されます。
で、25:30というのは、24時間を超えているので翌日の01:30を表すことにはならないと思います。日付もつけて時間計算すればうまくいくと思います。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) VBAで時間(00:00形式)を積算(足し算)したい 1 2022/11/15 17:04
- Excel(エクセル) Excel VBAどこが間違ってますか? 4 2023/07/17 10:04
- Visual Basic(VBA) 【VBA】先月分の取得ができない理由が分かりません。 2 2022/04/24 11:16
- Visual Basic(VBA) Excelマクロでセルに値が入力されたら実行する 5 2023/08/06 11:03
- Visual Basic(VBA) パーソナルXLSBのfuctionを呼び出すと「Functionが定義されていません」のエラーになる 2 2022/08/22 22:51
- Excel(エクセル) エクセルVBA VLOOKUPを使ってのカウント作業 2 2023/02/19 09:03
- Visual Basic(VBA) EXCELのVBAについて 2 2023/07/05 17:17
- Excel(エクセル) エクセルの早退時間を計算したいです。計算はうまくいっているようですが… 1 2022/12/26 16:22
- Visual Basic(VBA) Excel VBAの解読について質問があります。 概要は、マクロでチェックボックスにチェックすると日 1 2023/02/10 07:50
- Excel(エクセル) VBAで組み合わせ算出やCOUNTIFSの処理を高速化したいです。 4 2022/04/07 02:38
このQ&Aを見た人はこんなQ&Aも見ています
-
賃貸で可能な古民家風レトロな部屋作りのコツ!改めて知る畳の高い機能性と魅力も紹介
畳の部屋を雰囲気のよい部屋に仕上げたい!賃貸住宅でもできる古民家風のレトロな部屋作りのコツを伺った。
-
vba 時間の引き算 例えば 15:00から16:15の間の時間は1時間15分ですが、vbaのコード
Visual Basic(VBA)
-
VBAで時間の型と計算方法教えてください
Excel(エクセル)
-
Excel VBAの残業時間の合計計算について
その他(プログラミング・Web制作)
-
-
4
vbaの時間計算について
Excel(エクセル)
-
5
DATE型変数を初期化する方法
Visual Basic(VBA)
-
6
VBAでの勤務時間計算
Visual Basic(VBA)
-
7
エクセル マクロ 24時間を越える表示
Excel(エクセル)
-
8
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
9
VBAで○○:○○と表示させたいのに小数で0.53125のように表示さ
Access(アクセス)
-
10
或るプロシージャの呼び出し元判定
その他(Microsoft Office)
-
11
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで小数点以下1桁の年数を...
-
DATEDIFでマイナス表示をさせたい
-
妊娠週数をエクセルで計算した...
-
アクセスで教えてください。 ク...
-
エクセルでその日が第何週目か...
-
Filemaker 経過日数の計算式の...
-
Excel 土日祝祭日の判断
-
Excel Win版とMacで日付が変わる
-
エクセルVBAの時間計算
-
Excel VBAで「date」関数を使い...
-
エクセルで円グラフに引き出し...
-
エクセルで文字が白くなる
-
エクセルの主軸と第2軸の0を合...
-
エクセルで長い行を5行ごとに1...
-
Excelで、空白を表示したい
-
excelのマクロで該当処理できな...
-
エクセルで文字を含む式に、カ...
-
同一セルに日時があるものを日...
-
エクセルで特定の色の数字だけ...
-
excelグラフでデータテーブルを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで小数点以下1桁の年数を...
-
DATEDIFでマイナス表示をさせたい
-
妊娠週数をエクセルで計算した...
-
アクセスで教えてください。 ク...
-
WORD(ワード)で自動挿入した日...
-
ACCESSで前日比を行う方法で最...
-
Excel 日付関数の値を固定値に
-
Filemaker 経過日数の計算式の...
-
テンキー電卓のフリーソフトを...
-
Filemakerの年齢の自動入力につ...
-
エクセルVBAの時間計算
-
Excel VBAで「date」関数を使い...
-
Excel Win版とMacで日付が変わる
-
エクセル 滞在期間中の月数のカ...
-
エクセルでその日が第何週目か...
-
エクセル関数について
-
Excel 土日祝祭日の判断
-
数値8桁で入力された誕生日か...
-
Excelの関数について教えて下さ...
-
電卓ソフト(履歴&自動カンマ...
おすすめ情報