Excel文件决定一天格式化所有通用自定义 ddd的单元格

我一直在使用这个特定的文件多年(费用跟踪/支票簿)。 它有一些简单的macros,但是经过几年的微调,没有一个能够像我遇到的效果一样。 我正在运行Excel 2013,如果这对场景有任何影响。

几个月前,我注意到,当input数据到工作表中的一个未使用的区域时,显示的结果将是“星期一”,“星期”等等。看在工具栏中的格式下拉列表显示自定义,而不是一般,如我所料(具体的格式是[$ -409] ddd)。 很长一段时间,我只是把新工作的格式调整到了我需要的东西(一般,会计,百分比等等)并继续。 最近变得令人沮丧,我决定进一步调查。

看起来,通常格式为General的所有单元格都被格式化为Custom。 我没有注意到的大部分单元格只是简单的文本,如平衡,贡献等,所以我没有意识到格式已经改变。 只有我特别格式化为“会计”,“数量”,“百分比”等的单元格不会受到“自定义”的影响。

我没有任何代码在我的macros中对[$ -409] ddd进行全面更改,只有一个代码段在一个特定页面上应用“mmm dd”,并且硬编码为“mmm dd”。

有没有人有任何可能发生的线索? 对于如何纠正这种情况,我也接受了一些build议。 我正在考虑一个蛮力的macros,遍历所有工作表中的所有单元格,检查格式为[$ -409] ddd并将其更改为General。

如果正常风格已损坏,则可能发生这种情况。 检查它(使用右键单击)并在必要时进行修复:

在这里输入图像说明

Gary's Student最有可能是正确的原因。 无论如何,如果你不知道如何解决这个问题,或者原因是另一回​​事,这里是一个强制性的方法来纠正工作簿中所有工作表中的情况。

一些谨慎的话:

1)这将需要很长时间才能运行,因为它循环遍历工作簿中的所有单元格。

2)确保你插入正确的错误的数字格式的名称,否则将无法正常工作。

3)在尝试这样做之前,先制作一份工作簿的副本,以确保不会无意中破坏任何东西。

 Sub resetNumberFormats() Dim sht As Excel.Worksheet Dim cll As Range Dim wrongNumberformat As String Application.ScreenUpdating = False wrongNumberformat = "[$-409]ddd" For Each sht In Worksheets For Each cll In sht If wrongNumberformat = cll.NumberFormat Then cll.NumberFormat = "General" Next cll Next sht Application.ScreenUpdating = True End Sub 

编辑

下面的代码速度要快得多,而且我的工作瞬间完成。 试试这个:

 Sub setNumberFormats() Dim sht As Excel.Worksheet Dim cll As Range Dim wrongNumberformat As String ' insert VBA code for wrong number format below wrongNumberformat = "[$-409]ddd" With Application .FindFormat.NumberFormat = wrongNumberformat .ScreenUpdating = False End With On Error Resume Next For Each sht In Worksheets Do While Err.Number = 0 sht.Cells.Find(What:="*", SearchFormat:=True).NumberFormat = "General" Loop Err.Clear Next sht Application.ScreenUpdating = True End Sub