插入Excel单元格时VBAdate值更改其格式

我有datevariables格式如: 25_December_2010

一旦我使用

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

MsgBox肯定会popup并给我:2010年12月25日。

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

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

25 December 2010 , Excel自行采取行动,并用令人烦恼的入口configuration填充单元格: 25-Dec-2010

我怎样才能让我的单元格填充中间没有hyphen字符,而不是修整月份名称?

这段代码把date写入你想要的格式中的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是一个string数据types,我可能会使用

 .Value = CDate(strDate) 

在将其写入工作表之前,将其明确转换为Date数据types可能对非英文版本有价值,但我没有特别检查。

使用自定义date格式:

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

Excel工作表没有错,所以不要说了。 date是自开始date以来的天数的计数。 所以一个date是NUMBER 。 你可以格式化你想要的。

这是VBA,虽然开始date不同,但excel类似。

datevariables存储为IEEE 64位(8字节)浮点数,表示date范围从1月1日至9999年12月31日,以及时间从0:00:00至23:59:59。 任何可识别的文字date值都可以分配给datevariables。 date文字必须包含在数字符号(#)中,例如#1993年1月1日#或1月93###1。

datevariables根据计算机识别的短date格式显示date。 时间根据计算机识别的时间格式(12小时或24小时)显示。

当其他数字types转换为date时,小数点左边的值表示date信息,小数点右边的值表示时间。 午夜是0,中午是0.5。 负整数表示1899年12月30日之前的date。

date8字节9999年1月1日至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 

我也从表中改变它。 到工作表。