我有一个“时间表”宏,用于员工上班打卡和下班打卡。我的宏是这样的:
ActiveCell.Value = Time
ActiveCell.NumberFormat = "h:mm AM/PM"
它运行良好,仅显示为“7:30 AM”,例如,但在编辑字段中,有秒数,如果秒数不一致,这会使移位时间(公式 =IF(OR(C2="",F2=""),"",((F2-C2)-(E2-D2))*24)) 偏离一分钟,但我们不支付秒数,只支付分钟数。有没有办法修改只捕获小时和分钟的宏。格式化不能纠正它。我同意它每次都返回“7:30:00 AM”而不是实际秒数。谢谢!
答案1
四舍五入到最接近的分钟:
ActiveCell.Value = Int(Time * 24 * 60) / (24 * 60)
或者
ActiveCell.Value = TimeSerial(Hour(Time),Minute(Time),0)
答案2
你也可以尝试这个:
ActiveCell.Value = Format(range("D2"), "HH:MM")
笔记,单元格D2
中有一个公式,用于计算您在上面的问题中显示的时间。
或者 代替活动单元您也可以使用以下内容:
Selection.NumberFormat = "h:mm"
Range("E327").NumberFormat = "hh:mm"