Excel:在VBA中使用命名的Range.NumberFormat:“常规”与“标准”

这里有一些关于Range.NumberFormat的问题 – 希望有人能够提供准备好的答案,因为searchnetworking对于所有通用术语来说都很难。

一个小背景:我试图消除“随机” 错误1004代码: 无法设置Range类的NumberFormat属性是消息。 当我尝试将晚期绑定对象的.NumberFormat设置为命名格式时,发生错误,主要使用“常规”或“标准”。 该对象在99%的情况下是Application.Selection。 另外请注意,这种错误的最常见原因 – 在工作表或工作簿上的保护 – 在这里不适用

  1. 从Excel 2003到2007,微软似乎在VBA中引入了一个bug。 如果在即时窗口中input? Selection.NumberFormat ? Selection.NumberFormat然后按Enter,我得到“General”。 如果我用某个插件 (不是所有的,不可预测的)运行一个带有断点的macros,我通常会得到“标准”。 什么是“标准”? 这是从哪里来的? 我想从一个单元格中选取一个数字格式,然后放在另一个单元格中; 随机的时候,我不能这样申请“标准”,其结果就不像将军。 (在Excel 2003中,它不会出现在即时窗口中,并且无法系统地应用。)

  2. 即使我将“标准”的所有实例转换为“常规”,我仍然有时在MyObject.NumberFormat = "General"上得到一个错误。 我已经读了几个地方,最好是应用指定格式的基础格式,即General适用于某些东西(正如我认为的那样)。 Excel VBA中的语法是什么?

在此先感谢您的帮助。

这可能不是一个完整的解决scheme,但这是一个开始:

我相信“标准”是用来代替某些语言中的“一般”。 您应该将结果与.NumberFormatLocal进行比较。

对于解决scheme的一部分,如果你想将NumberFormat设置为“General”并且出现错误,那么就把NumberForamt设置为一个空string。 这将自动生成NumberFormat General / Standard。

 selection.NumberFormat = ""