本日 203 人 - 昨日 141 人 - 累計 315526 人
  • 記事検索

RSS

3流プログラマーですから・・・

お疲れ様です。

またまたプログラミングの話ですが、現在社内用タイムレコーダー開発なんぞもしております。

実際打刻は分単位でしていても計上は5分とか15分単位ってことがあります。
そんな計上の単位に進めたり戻したりを「丸め」と私は言うのですが・・・。

これって機械にやらすための仕組みが必要なわけで、なんとか簡単に済ませたいものなので関数作りました。

関数ってのは何か引数渡すと戻り値が帰ってくるやつです・・はい。


Function Ttrim(ByVal a As Long, t As String, s As Boolean) As String
Dim tm As Variant, y As Long
Dim h As Long, m As Long

tm = Split(t, ":") '時間を時と分に分ける
h = tm(0) '時
m = tm(1) '分

If m <> 0 Then '分が00丁度なら処理しない
Select Case s 'IN OUTの判定
Case True 'INの場合
y = WorksheetFunction.RoundUp(m / a, 0) * a
If y >= 60 Then '繰上げ処理
h = h + 1
m = 0 '繰り上がると分は0強制
Else
m = y
End If
Case False 'OUTの場合
y = WorksheetFunction.RoundDown(m / a, 0) * a
m = y
End Select
End If


Ttrim = h & ":" & Format(m, "00")

End Function

(実際はインデントしてあります)

こんな感じですねぇ。
引数として変数aは丸め単位 tは打刻時間 sは出退勤フラグとなってます。

これでめでたくメインのプロシージャーでTtrim(15,"6:52",true)などと使用(実際マジックナンバーの部分は変数)すると7:00と丸め値が帰ってきます。

一件落着・・・・・・。
ロジックは直接私に聞いてください・・。
雑な関数だったらすみません・・・・。
私なんてったって3流プログラマーですから・・・。



えっ?専門分野やめろって?




メンゴメーーンゴッ!


Kemayan☆



コメント
name.. :記憶
e-mail..
url..

画像認証
画像認証(表示されている文字列を入力してください):