| 
    
     |  | さっそくのレス、有難うございます。コードはちょっと長いので、遠慮してたんですが、やっぱり見ていただいたほうが良いようなのでアップします。 とてもへたくそなコードだと思いますが、ご意見お願いします。
 
 
 これは、メニューボタンを貼った、フォームの(シートではない)の関数、及びイベントです。
 
 ' 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
 
 |  |