我有一个时间值为1:23:45 AM的单元格,并且只想显示小时值或将其用于其他计算。需要使用vba执行此操作。不,我无法手动格式化列。
谢谢, 萨姆
答案 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))