Excel VBA强制数值为时间格式

时间:2012-01-25 16:10:58

标签: vba excel-vba excel-2007 excel

有两列从Access数据库复制到工作簿中。

我想确保数据格式正确,所以我添加了以下代码:

'DateTime Column
Sheets("Sheet1").Columns("A:A").Select
Selection.NumberFormat = "m/d/yyyy hh:mm"

'Time Column
Sheets("Sheet1").Columns("B:B").Select
Selection.NumberFormat = "hh:mm"

日期时间列格式正确。
最初将时间列复制为数字等效值(即0.595277777777778)而不是时间值(14:17)。

运行宏代码对视觉显示没有任何作用,直到我点击F2并输入格式适用的单元格。

是否有方法(没有循环)强制Excel应用格式化?

3 个答案:

答案 0 :(得分:3)

您可以使用VBA通过将范围的value属性设置为自身来实现与Steve Homer的答案相同的效果:

Dim r As Range
Set r = Sheets("Sheet1").Columns("B:B")
r.Value = r.Value

答案 1 :(得分:2)

如果您复制列并粘贴为值(如果需要,则通过宏),Excel应重新解释数据类型,以上内容应该正常工作。

答案 2 :(得分:0)

您可以在不将TMP声明为DATE的情况下执行此操作:

TMP = CDate(Range("A1").Value) ' we suppose A1 value is 12:45:00
TMP = "" & TMP ' convert to char
TMP = Left(TMP, 5) ' extract the first 5 char
MsgBox TMP ' for displaying 12:45