我有一个时间值为 1:23:45 AM 的单元格,我想只显示小时值或将其用于其他计算。需要使用 vba 执行此操作。不,我无法手动格式化该列。
谢谢,山姆
要使用 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 中对其进行格式化
我不确定您的单元格是否是时间字段。如果是,您可以执行以下操作吗?
dim h as integer
h = Hour(Cell(1,1))