【问题标题】:VBA does not change format of all cellsVBA 不会改变所有单元格的格式
【发布时间】:2017-08-14 15:56:32
【问题描述】:

我有一列 (col. I) 包含不同格式的日期:

16. Jul 98 // 22-MAR-2016 // 04-MAY-2015 //
17. Jul 10 // 13-DEC-2011 // 25. Aug 98  // 12. Sep 11

我使用以下代码更改格式:

Sub numberformats()
    Range("I:I").NumberFormat = "dd. mmm yyyy"
End Sub

但是,虽然这在格式为 dd 的单元格上运行良好。 mmm yy,它不适用于 dd-mmm-yyy 格式的单元格。只需右键单击即可更改格式 - 格式单元格也无济于事(这是我的第一步,在转到 VBA 之前)。

我进行了互联网搜索,但我找到的所有类似问题的答案都过于复杂,以至于我无法根据自己的问题进行调整。我很高兴得到一些建议(我是这个的绝对初学者......)。

【问题讨论】:

  • dd-mmm-yyy 单元格的值是实际存储为字符串还是日期?
  • 您使用的是英文版的 Excel 还是其他版本?例如。德语/法语/保加利亚语?
  • - 单元格存储为“自定义”,类型为 TT。嗯JJ
  • - 我的 excel 是德语

标签: excel vba formatting


【解决方案1】:

当您使用非英语版本的 Excel 时,会发生这种情况。

例如,在德语版本中,22.03.2016 显示为 22.Mrz 16。因此,在您的情况下,当您提供22-MAR-2016 时,Excel 不理解您正在提供日期。 UPPERCASE 有点问题。

将其更改为22-Mar-2016 并重试可能是个好主意,在我的 Excel 中它可以正常工作。

要查看您的 Excel 理解的内容,请转到文件>选项>高级>用户定义的列表。在那里您将看到以下内容:

【讨论】:

  • 哦,非常感谢!我明白了,是的,我的 excel 是德语的。我检查了用户定义的列表,确实没有英文版本的月份。我添加了英文的,但这无助于让 VBA 正常工作。我需要做的不仅仅是在那里添加它......?我无法手动更改所有大写字母,太多了我会定期更新这些日期的列表,所以我需要找到一个永久的解决方案,即一个有效的 VBA。
  • JAN 替换为JanFEB 替换为Feb 等等,它应该可以工作。您也可以自动更换。
  • 嗯,我明白了,让我看看我是否能够做到这一点。非常感谢。
  • 你只需要12次更换。请参见此处 - stackoverflow.com/questions/8550240/… 或此处 stackoverflow.com/questions/8571192/… 例如。
猜你喜欢
  • 2013-06-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-02
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多