我有一张名为“02-05-2015”的表格。 我用
Dim sheetname As String
sheetname = ActiveSheet.Name
MsgBox (sheetname)
在msg框中显示02-05-2015。 但是,如果我使用
Range("K2").Value = sheetname
它显示05-02-2015。如果单元格格式更改为dd / mmm / yyyy,则显示2015年2月5日。为什么会出现此问题。我不知道。 即使我使用
Range("K2").Value = Format(sheetname,"dd/mm/yyyy")
不会发生任何变化。 我需要05/02/2015或05-02-2015在单元格中作为日期格式。
答案 0 :(得分:0)
这是设计行为。当您将任何值放入单元格时,Excel会尽力弄清楚如何处理它。这包括将数字设为实际数字(在DUNS编号或带有前导零的零件编号的情况下并不总是需要)并尝试将看似日期的内容与系统的区域设置进行协调< em> mm / dd / yyyy 或 dd / mm / yyyy 。 02-05-2015 的问题在于它可能是 05-Feb-2015 或 02-May-2015 。 DMY 或 MDY 的决定是在计算机的系统区域设置(位于“控制面板”中)中进行的。
根据您的描述,您希望Range(&#34; K2&#34;)保持代表 02-May-2015 的日期,而不是 05-Feb- 2015 。您的系统似乎也设置为 mm / dd / yyyy 的默认值。
这个三步例程可以为您提供所需的结果。
With Range("K2")
.Value = Chr(39) & .Parent.Name
.TextToColumns Destination:=Range("K2"), DataType:=xlFixedWidth, FieldInfo:=Array(0, 4)
.NumberFormat = "mm-dd-yyyy"
End With
这将获取工作表名称并将其强制为K2,方法是将其强制为带有前缀单引号的文本值(例如'
或 tick )。然后,它使用Text-to-Columns命令将其解释为 DMY 日期,并将其存储为当前系统区域设置中的日期。最后,它应用一些单元格格式来获得所需的单元格显示值。