여러 명의 직원이 근무한 총 시간을 합친 스프레드 시트 (x4)가 있습니다. 한 직원의 합계는 24 시간입니다. 내 기능에서는 Excel이 내부적으로 시간을 나타내는 방식으로 인해 1과 같습니다. '시간'값을 기준으로 셀의 서식을 지정하여 각 사람에 대해 총 시간 (분)을 표시합니다. 나는 typename (hours) = double을 검사했다. 시간 = 1 일 때 시간 => 1이 '참'과 같지 않은 이유를 알 수 없습니다. 그 사람의 스프레드 시트 값에 1 분을 추가하면 예상대로 작동합니까?Excel vba - 논리 오류
Public Function format_hours(hours As Variant) As Variant
If hours >= 1 Then
format_hours = Application.Text(hours, "[hh]:mm")
ElseIf hours > 0 Then
format_hours = Format(hours, "hh:mm")
Else
format_hours = 0
End If
End Function
'변형'은 사용하지 않는 것이 좋습니다. 변수 유형을 강하게 지정하면 도움이됩니다. (또한'format_hours'에'f'가 없습니다.'Option Explicit'을 사용하면 에러를 피할 수 있습니다.) – braX
방금 변수 'hours'에 선행 공백이 있습니다. 이를 제거하면 로직이 예상대로 작동합니다. 그 공간은 어디서 오는거야? – Chas
이 함수가 어떻게 호출되는지 알지 못해서 알기 힘듭니다. 변수 대신 숫자로 인수를 지정한 경우 더 빨리이 변수를 포착했을 것입니다. – braX