Excel:在VBA中使用命名的Range.NumberFormat:“常规”与“标准”
这里有一些关于Range.NumberFormat的问题 – 希望有人能够提供准备好的答案,因为searchnetworking对于所有通用术语来说都很难。
一个小背景:我试图消除“随机” 错误1004代码: 无法设置Range类的NumberFormat属性是消息。 当我尝试将晚期绑定对象的.NumberFormat设置为命名格式时,发生错误,主要使用“常规”或“标准”。 该对象在99%的情况下是Application.Selection。 另外请注意,这种错误的最常见原因 – 在工作表或工作簿上的保护 – 在这里不适用 。
-
从Excel 2003到2007,微软似乎在VBA中引入了一个bug。 如果在即时窗口中input
? Selection.NumberFormat
? Selection.NumberFormat
然后按Enter,我得到“General”。 如果我用某个插件 (不是所有的,不可预测的)运行一个带有断点的macros,我通常会得到“标准”。 什么是“标准”? 这是从哪里来的? 我想从一个单元格中选取一个数字格式,然后放在另一个单元格中; 随机的时候,我不能这样申请“标准”,其结果就不像将军。 (在Excel 2003中,它不会出现在即时窗口中,并且无法系统地应用。) -
即使我将“标准”的所有实例转换为“常规”,我仍然有时在
MyObject.NumberFormat = "General"
上得到一个错误。 我已经读了几个地方,最好是应用指定格式的基础格式,即General适用于某些东西(正如我认为的那样)。 Excel VBA中的语法是什么?
在此先感谢您的帮助。
这可能不是一个完整的解决scheme,但这是一个开始:
我相信“标准”是用来代替某些语言中的“一般”。 您应该将结果与.NumberFormatLocal进行比较。
对于解决scheme的一部分,如果你想将NumberFormat设置为“General”并且出现错误,那么就把NumberForamt设置为一个空string。 这将自动生成NumberFormat General / Standard。
selection.NumberFormat = ""