
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.4
- 回答日時:
こんにちは、
>頂いたソースを実行してみたのですがうまく動かなかったです。
おかしいですね。私の環境では、うまく行くのですが、
どんなエラーが出ていますか??
>17:00-9:00= 休憩1:00 勤務時間 7:00
こんな感じにも改造しましたけど、このデータを勤務時間を他で利用するときに
不便になると思いますよ。
Public Function ddd(ds As Date, de As Date) As String
Dim dd1 As Double
Dim dd2 As Double
Dim dd3 As Double
Dim kyukei As String
dd1 = DateDiff("h", ds, de)
dd2 = (DateDiff("n", ds, de) Mod 60) / 60#
dd3 = dd2 * 60
If (dd1 + dd2 >= 8.5) Then
dd1 = dd1 - 1
kyukei = " 休憩 1:00"
End If
ddd = Format(de, "hh:mm") & "-" & Format(ds, "hh:mm") & "=" & kyukei & " 勤務時間 " & Format(dd1, "00") & ":" & Format(dd3, "00")
End Function
計算結果シート上
始業時間---就業時間---勤務時間
7:00-------12:00------12:00-07:00= 勤務時間 05:00
7:00-------20:00------20:00-07:00= 休憩 1:00 勤務時間 12:00
7:00-------13:00------13:00-07:00= 勤務時間 06:00
7:00-------15:29------15:29-07:00= 勤務時間 08:29
7:00-------15:30------15:30-07:00= 休憩 1:00 勤務時間 07:30
No.3
- 回答日時:
>if x >= 8.5 then Range("D1")=7.5
このような式は成立しません。
提示されたコードのxは文字型ですし、時刻には8.5と言う値もありませんから・・・。
時刻は0~1未満の間の値(小数)で表すので、8.5時間なら 8.5/24 のように計算出来ます。
Sub test()
Dim x As Single
x = Range("B1") - Range("A1")
Range("C1") = Format(x, "hh:mm")
If x >= (8.5 / 24) Then
Range("D1") = Format(x - (1 / 24), "hh:mm")
Else
Range("D1") = Format(x, "hh:mm")
End If
End Sub
No.2
- 回答日時:
こんにちは、
日にちがまたがっている場合があるのですね。
元データを #2006/9/1 18:00# ~ #2006/9/2 8:30#という表現にしないといけませんが、
以下の様なvbaを作っていました。
Public Function d(ds As Date, de As Date) As String
'時間の計算
d = Format(DateDiff("h", ds, de), "00")
'分の計算と時間との結合
d = d & ":" & Format(DateDiff("n", ds, de) Mod 60, "00")
End Function
計算例をイミディエイトで実行してみると
?d(#2006/9/1 7:00#,#2006/9/2 8:11#)
25:11
?d(#2006/9/1 7:00#,#2006/9/1 8:01#)
01:01
のようになります。
こんな感じで、いいのですかね。???
この回答への補足
頂いたソースを実行してみたのですがうまく動かなかったです。。DataDiffで時間と分だけつかってなんとかならないですかね。とりあえず日付をまたぐ勤務は抜きにして。。
17:00-9:00= 休憩1:00 勤務時間 7:00
といった感じにしたいんですが
No.1
- 回答日時:
C3セルの書式設定(時刻)ができていないだけじゃないですか?
Range("C1") = Format(Range("B1") - Range("A1"), "hh:mm")
この回答への補足
でも、昼休みの休憩を引くのに
合計勤務時間は8.5時間以上は1時間休憩
8.5時間未満は休憩時間無しという処理をしたんです。
変数にRange("C1")を代入してもうまくいかないんですよ。
Dim x as string
Range("C1") = Format(Range("B1") - Range("A1"), "hh:mm")
x = Range("C1")
if x >= 8.5 then Range("D1")=7.5
end if
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
今、見られている記事はコレ!
-
弁護士が解説!あなたの声を行政に届ける「パブリックコメント」制度のすべて
社会に対する意見や不満、疑問。それを発信する場所は、SNSやブログ、そしてニュースサイトのコメント欄など多岐にわたる。教えて!gooでも「ヤフコメ民について」というタイトルのトピックがあり、この投稿の通り、...
-
弁護士が語る「合法と違法を分けるオンラインカジノのシンプルな線引き」
「お金を賭けたら違法です」ーーこう答えたのは富士見坂法律事務所の井上義之弁護士。オンラインカジノが違法となるかどうかの基準は、このように非常にシンプルである。しかし2025年にはいって、違法賭博事件が相次...
-
釣りと密漁の違いは?知らなかったでは済まされない?事前にできることは?
知らなかったでは済まされないのが法律の世界であるが、全てを知ってから何かをするには少々手間がかかるし、最悪始めることすらできずに終わってしまうこともあり得る。教えてgooでも「釣りと密漁の境目はどこです...
-
カスハラとクレームの違いは?カスハラの法的責任は?企業がとるべき対応は?
東京都が、客からの迷惑行為などを称した「カスタマーハラスメント」、いわゆる「カスハラ」の防止を目的とした条例を、全国で初めて成立させた。条例に罰則はなく、2025年4月1日から施行される。 この動きは自治体...
-
なぜ批判コメントをするの?その心理と向き合い方をカウンセラーにきいた!
今や生活に必要不可欠となったインターネット。手軽に情報を得られるだけでなく、ネットを介したコミュニケーションも一般的となった。それと同時に顕在化しているのが、他者に対する辛らつな意見だ。ネットニュース...
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAで関数をつくる
-
変化させるセルが変化しない
-
PHPとJavaでSHA256の結果を同じ...
-
スレッド処理からダイアログを...
-
排他的論理和 BCC(水平パリテ...
-
matlabで計算終了
-
VBAの再計算が反映されない件に...
-
パルスを時間(m/min)の計算につ...
-
EXCELなどで「返す」という表現
-
引き放し法による除算アルゴリ...
-
VBA入力フォームで労働時間の計...
-
エクセルマクロで計算結果の値...
-
太陽の位置計算のプログラムを...
-
モジュラス103の計算とは何でし...
-
チェックデジット計算できる関...
-
入射角反射角
-
「評価」「評価値」という言葉...
-
電卓でmodの計算
-
VBAで一時的にオーバーフローを...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
65536は2の何乗なのでしょうか?
-
VBAの再計算が反映されない件に...
-
EXCELなどで「返す」という表現
-
matlabで計算終了
-
排他的論理和 BCC(水平パリテ...
-
変化させるセルが変化しない
-
モジュラス103の計算とは何でし...
-
傾いた四角形内の範囲の条件式
-
VBAで関数をつくる
-
[急募]Pythonについてです。
-
数値計算の高速化 (cos, sin, exp)
-
C言語についての質問です。 ル...
-
切り上げたい
-
DLL(VC++で作った)で稼動中の...
-
CとFORTRANの計算速度はどちら...
-
趣味で「乗換案内」みたいなソ...
-
CGIの実行権限(ディスク容...
-
エクセルで特定のセルのみを任...
-
functionを含んだプログラムを...
-
時間差を求める
おすすめ情報