|
分類:[VB6 以前]
使用OS:Windows2000
開発環境・言語:MicrosoftExcel2000 , MicrosoftVisualBasic6.0
こんにちは、お世話になります。
エクセルの勤務表に、日勤時間や週勤時間等を自動記録するシステムを作成しています。
現在は週の初めの営業日と、終わりの営業日の入力を求め、
その週の勤務時間と標準勤務時間を記録する部分を作っております。
そのうちの、標準勤務時間の部分が、
小数部が切り捨てられるのか、本来の値とずれてしまいます。
マクロなしでやると、標準勤務時間は以下の式を入力しています。
=INT(0.319444444444444*営業日数*24/1)+MOD(0.319444444444444*営業日数*24,1)*60/100
それをマクロでは以下のように記録してみました。
------------------------------------------------------
Sub 週勤計算()
Dim Startday As Integer '週始めの営業日を格納
Dim Endday As Integer '週終わりの営業日を格納
Dim Fixedstandard As Single '週の標準勤務時間を計算して格納
'週初めの営業日の入力を求める。
Startday = Application.InputBox("週の始まりの平日を入力してください。", "週勤務時間計算", , , , , , 1)
'週終わりの営業日の入力を求める。
Endday = Application.InputBox("週の終わりの平日を入力してください。", "週勤務時間計算", , , , , , 1)
-中略(週の勤務時間を記録)-
'記録部のセルを結合
Range(Cells(Startday + 3, "M"), Cells(Endday + 3, "M")).MergeCells = True
'週の標準勤務時間を算出してセルに入力
Fixedstandard = (Int(0.319444444444444 * (Endday - Startday + 1) * 24 / 1)) + (0.319444444444444 * (Endday - Startday + 1) * 24 Mod 1) * 60 / 100
Cells(Startday + 3, "M") = Fixedstandard
End Sub
------------------------------------------------------
MOD関数の動作が違うらしいということは理解できたのですが、
小数部を切り捨てない関数、もしくは演算子が分からず、つまづいています。
この質問を書くためにデバック作業をしながら確認をしていたら、
int関数の動きも期待通りでない気がしてきました。
|