Excel 2010 专业版。
我有一个奇怪的格式问题。
它在美国运行良好,但在我在奥地利运行代码之后就不行了。在奥地利,它忽略了我的日期和时间格式。在那之后我不能改变它,即使是手动的。看看如果我尝试不同的格式,顶部的示例不会改变?
单元格值包含整个日期和时间很重要,但要使用所需的时间和日期格式。
2013 年 14 月更新:该问题在其他网站上进行了描述,认为日期以某种方式“卡在文本中”并且无法重新格式化为其他任何内容。一个建议是对单元格做一些数学运算以强制它返回非文本。(想法:range.value = cdate(range.value) + 0)我仔细查看了我在奥地利的单元格,发现日期和时间之间有两个空格,例如 14.11.2013 15:22:19。在一种情况下,我删除了其中一个空格,然后它变成了我想要的格式 (14-NOV-13)。但是,我无法重复这一点,并且必须弄清楚如何以编程方式做某事。我还不确定正确的解决方案。在我粘贴我的变量数组后,它可能会涉及循环遍历所有日期单元格,并以某种方式修复它们。
坏(奥地利)
好(美国)
更多细节:在我的应用程序中,我通过数组将日期写入两个单元格,然后使用两种自定义日期格式之一对其进行格式化。当我检查它时,单元格格式是正确的。当我查看美国的工作表时,它是正确的,例如:
- A1 显示 01-DEC-13 ' 英文
- B2 显示 15:23
然后我将 XLSM 复制到奥地利的服务器并打开它。它看起来是正确的。
- A1 显示 01-DEZ-13 ' 德语
- B1 显示 15:23
然后我运行我的代码,将新数据写入这些时间字段并对其进行格式化。这搞砸了我在奥地利看到的东西,但在美国却没有。
- A1 显示 01.12.2013 15:23 ' 值正确,格式不正确
- B1 显示 01.12.2013 15:23 ' 值正确,格式不正确
我进行了调试,直到找到导致问题的部分,即当我将数据从数组写入工作表时。在调试中,我可以看到当我复制数组时,所有格式都丢失了。那没问题。
Set Destination = myWS.Range("A" & lFirstRow)
Destination.Resize(UBound(arrIn, 1), UBound(arrIn, 2)) = arrIn
然后我运行一个重新格式化该区域的例程。
If not bFormatWorksheet(myWS) then err.Raise glHandled_Error
在这个例程中,我尝试使用两种方法中的一种来纠正问题。首先,我尝试从隐藏的模板中复制我想要的格式。
myWS.Rows(lFirstRow & ":" & lLastRow).ClearFormats
wksTemplate.Rows(giHEADER_ROW + 1).Copy
myWS.Rows(lFirstRow & ":" & lLastRow).PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
在我的美国版本中,这会产生格式正确的单元格。例如
- A1.Value = 12/5/2013 05:00:45
- B1.Value = 12/5/2013 05:00:45
- A1 显示 05-DEC-13 ' DD-MMM-YY 正确
- B1 显示 05:00 ' HH:MM 正确
同样,当我在奥地利打开文档时它看起来不错,但在我运行任何更新代码后就不行了。
在奥地利运行更新代码后,我看到:
- A1.Value = 12/5/2013 05:00:45
- B1.Value = 12/5/2013 05:00:45
- A1 显示 = 2013 年 12 月 5 日 05:00:45
- B1 节目 = 12/5/2013 05:00:45
如果我检查 NumberFormat ...
- ?Range("A1").NumberFormat
- dd-mm-yy
- ?Range("B2").NumberFormat
- 小时:毫米
如果我右键单击每个单元格以检查我看到的格式...
- A1 格式 TT-MMM-JJ ' 对 Tag、Monat、Jahr 正确
- B1 格式 hh:mm ' 正确
由于这不起作用,我进入并明确地重新格式化每次循环中的单元格,如下所示:
for i = lFirst to lLast
myWS.Range("A" & i).numberformat = "DD-MMM-YY"
myWSRange("B" & i).numberformat = "HH:MM"
next i
这没有帮助。
想法?
谢谢莎莉