插入Excel单元格时的VBA日期值会更改其格式

时间:2014-05-24 17:15:10

标签: excel vba excel-vba excel-2010

我的日期变量格式为:25_December_2010

一旦我使用

Dim strDate As String
strDate = "25_December_2010"
strDate = Replace(strDate,"_"," ")
MsgBox strDate

肯定会弹出一个MsgBox给我:2010年12月25日。

但是,一旦我尝试将值放入单元格,例如:

Sheets("Sheet1").Range("A1").Value = strdate

而不是使用cell填充25 December 2010; Excel会自行处理并使用错误的条目配置填充单元格:25-Dec-2010

如何填充我的单元格,中间没有hyphen个字符且没有修剪月份名称?

3 个答案:

答案 0 :(得分:4)

此代码以你想要的格式将日期放入A1:

Option Explicit
Sub WriteDate()
    Dim strDate As String
strDate = "25_December_2010"
strDate = Replace(strDate, "_", " ")
MsgBox strDate

With Sheets("Sheet1").Range("A1")
    .Value = strDate
    .NumberFormat = "dd mmmm yyyy"
End With

End Sub

我不确定是否有必要,但为了清楚起见,因为strDate是字符串数据类型,我可能会使用

.Value = CDate(strDate)

在将其写入工作表之前将其显式转换为Date数据类型可能在非英语版本中有价值,但我没有特别检查。

答案 1 :(得分:1)

使用自定义日期格式:

Sheets("Sheet1").Range("A1").NumberFormat = "dd mmmm yy" //A1 = 25 December 10

答案 2 :(得分:1)

Excel表没有错,所以别说它了。日期是自开始日期以来的天数的计数。因此,日期为 NUMBER 。您可以根据需要对其进行格式化。

这是VBA,excel类似,但起始日期不同。

日期变量存储为IEEE 64位(8字节)浮点数,表示从9999年1月1日到12月31日以及从0:00:00到23:59:59的日期。任何可识别的文字日期值都可以分配给Date变量。日期文字必须用数字符号(#)括起来,例如#1993年1月1日#1或#1 Jan 93#。

日期变量根据计算机识别的短日期格式显示日期。时间根据计算机识别的时间格式(12小时或24小时)显示。

当其他数字类型转换为日期时,小数点左侧的值表示日期信息,而小数点右侧的值表示时间。午夜为0,午间为0.5。负整数表示1899年12月30日之前的日期。

日期8字节1月1日,100日至9999年12月31日

这是在Excel中显示的内容。

    Selection.NumberFormat = "d mm yyyy"

这适用于我

Sub DateF()

Dim strDate As String
        strDate = "25_December_2010"
        strDate = Replace(strDate, "_", " ")
        MsgBox strDate
        Worksheets("Sheet1").Range("A1").NumberFormat = "dd mm yy"

        Worksheets("Sheet1").Range("A1").Value = strDate
End Sub

我也从表中更改了它。到工作表。