Option Explicit
'--------------------------------------------------
' クラス名 : cls工数データ
' 概要 : 工程情報と営業日計算機能を内包するクラス
'--------------------------------------------------
' プロパティ(データ)
Public 行番号 As Long
Public ツール名 As String ' ツール名(B列)
Public 氏名 As String
Public 工程名 As String
Public 開始日 As Date
Public 終了日 As Date
Public 工数セルアドレス As String
Public 工数 As Double
Public 日数 As Long ' 営業日数
Public 平均工数1営業日 As Double ' 営業日1日あたりの平均工数
' プロパティ(外部注入)
Public dic休業日 As Scripting.Dictionary ' キー:休業日
'--------------------------------------------------
' 日付妥当性チェック(終了日 >= 開始日)
'--------------------------------------------------
Public Function fnc日付妥当性判定() As Boolean
fnc日付妥当性判定 = IsDate(開始日) And IsDate(終了日) And 開始日 <= 終了日
End Function
'--------------------------------------------------
' 営業日数算出(休業日を考慮)
'--------------------------------------------------
Public Function fncLng営業日数取得() As Long
Dim dat工程日 As Date
Dim lngカウント As Long
If Not IsDate(開始日) Or Not IsDate(終了日) Then
fncLng営業日数取得 = 0
Exit Function
End If
For dat工程日 = 開始日 To 終了日
If Not dic休業日.Exists(dat工程日) Then
lngカウント = lngカウント + 1
End If
Next
fncLng営業日数取得 = lngカウント
End Function
'--------------------------------------------------
' プロシージャ名 : prc工数自動補完
' 機能概要 : 工数が未入力(0または空白)の場合、営業日数で補完する
' 留意点 : 工数は Double型で保持
'--------------------------------------------------
Public Sub prc工数自動補完()
If 工数 = 0 Then
工数 = 日数
End If
End Sub
'--------------------------------------------------
' 関数名 : fncDbl平均工数1営業日
' 機能概要 : 工数 ÷ 営業日数 を小数第3位切り捨てで算出する
' 引数 : なし(クラス内プロパティを参照)
' 戻り値 : Double型(平均工数/営業日)
'--------------------------------------------------
Public Function fncDbl平均工数1営業日() As Double
If 日数 = 0 Then
fncDbl平均工数1営業日 = 0
Else
fncDbl平均工数1営業日 = Int((工数 / 日数) * 100) / 100
End If
End Function
'--------------------------------------------------
' デバッグ出力用の文字列生成
'--------------------------------------------------
Public Function fncToDebugString() As String
fncToDebugString = _
"ツール名: " & ツール名 & _
" / 氏名: " & 氏名 & _
" / 工程: " & 工程名 & _
" / 開始日: " & 開始日 & _
" / 終了日: " & 終了日 & _
" / 工数: " & 工数 & _
" / 営業日数: " & 日数 & _
" / 1営業日平均工数: " & 平均工数1営業日
End Function
コメント