Excel VBA格式单元格作为自定义“h”

时间:2009-07-02 22:20:51

标签: excel vba time format cell

我有一个时间值为1:23:45 AM的单元格,并且只想显示小时值或将其用于其他计算。需要使用vba执行此操作。不,我无法手动格式化列。

谢谢, 萨姆

2 个答案:

答案 0 :(得分:4)

要使用VBA格式化单元格以仅显示小时:

With Worksheets("Sheet1").Cells(1, 1)
    .NumberFormat = "H"
End With

要读取VBA中的小时值(无论格式化单元格如何):

Dim hourValue As Integer

With Worksheets("Sheet1").Cells(1, 1)
    If (IsDate(Format(.Value, "hh:mm:ss"))) Then
        hourValue = Hour(.Value)
    Else
        // handle the error
    End If
End With

如果要在代码中使用显示的值而不在VBA中执行转换,请使用单元格的Text属性(Range)而不是Value属性。您需要确保首先正确格式化单元格:

Dim hourValue As Integer

With Worksheets("Sheet1").Cells(1, 1)
    If ((.NumberFormat = "H") And _
            (IsDate(Format(.Value, "hh:mm:ss")))) Then
        hourValue = CInt(.Text)
    Else
        // handle the error
    End If
End With

如果您只想在工作表公式中使用小时值,请使用HOUR()工作表函数 - 例如=HOUR(A1)

最后,如果您无法手动格式化列,因为工作表受到保护,那么您将无法在VBA中对其进行格式化

答案 1 :(得分:0)

我不确定你的手机是否属于时间场。如果是,您可以执行以下操作吗?

dim h as integer
h = Hour(Cell(1,1))