|
さっそくのレス、有難うございます。コードはちょっと長いので、遠慮してたんですが、やっぱり見ていただいたほうが良いようなのでアップします。
とてもへたくそなコードだと思いますが、ご意見お願いします。
これは、メニューボタンを貼った、フォームの(シートではない)の関数、及びイベントです。
' 10.5 + 2.10 = 13.0 で計算で計算結果を返す(→意味:10:50+2:10=13:00)
Private Function 時分合計(ctime1, ctime2)
Dim 時数1 As Integer
Dim 時数2 As Integer
Dim 分数1 As Integer
Dim 分数2 As Integer
Dim 計時数 As Integer
Dim 計分数 As Integer
時数1 = Int(ctime1) '切捨て
時数2 = Int(ctime2) '切捨て
分数1 = (ctime1 - 時数1) * 100
分数2 = (ctime2 - 時数2) * 100
計分数 = 分数1 + 分数2
計時数 = 時数1 + 時数2 + ((分数1 + 分数2) \ 60)
計分数 = 計分数 - (60 * ((分数1 + 分数2) \ 60))
時分合計 = 計時数 + (計分数 / 100)
End Function
'データファイルインポート → 計算
Private Sub BtnInport_Click()
Dim Ret As Variant
Dim sFullname As String
Dim iEndRow As Integer
Dim iRow As Integer 'ループカウンタ
Dim 時間内労働
Application.ScreenUpdating = False
'ファイルを指定
CurDir (ThisWorkbook.Path)
Ret = Application.GetOpenFilename("CSVファイル(*.csv), *.csv")
If Ret = False Then
Exit Sub 'キャンセル
End If
'パス・ファイル名の取得
sFullname = Ret
'メニュー画面を閉じる
Unload Me
'CSVファイルを開いて、「勤怠シート」にデータを貼り付け
Workbooks.Open Filename:=sFullname
Cells.Select
Selection.Copy
Windows(Dir(ThisWorkbook.FullName)).Activate
Worksheets("勤怠シート").Activate
Cells.Select
ActiveSheet.Paste
'2行目からループ:フィールドの1と2の時間合計を3にセット
iEndRow = ActiveSheet.Range("A65536").End(xlUp).Row
For iRow = 2 To iEndRow
時間内労働 = 時分合計(ActiveSheet.Cells(iRow, 1), ActiveSheet.Cells(iRow, 1)) '←ここの「時分合計」が呼び出されない!!
ActiveSheet.Cells(iRow, 3) = 時間内労働
Next iRow
End Sub
|
|