Excel: Работа с именованным Range.NumberFormat в VBA: «Общие» и «Стандартные» - PullRequest
2 голосов
/ 03 сентября 2011

Несколько вопросов о Range.NumberFormat здесь - надеюсь, у кого-то есть готовые ответы, которые он может предоставить, поскольку поиск в Интернете сложен со всеми общими терминами.

Небольшая предыстория: я пытаюсь устранить"random" Ошибка 1004 коды: Невозможно установить свойство NumberFormat класса Range - это сообщение.Ошибка возникает, когда я пытаюсь установить .NumberFormat объекта с поздней привязкой в именованный формат, в основном работая с «General» или «Standard».Объектом в 99% случаев является Application.Selection.Также обратите внимание, что наиболее распространенная причина этой ошибки - защита на листе или в рабочей книге - здесь не применяется .

  1. С Excel 2003 по 2007 г.Похоже, что Microsoft представила ошибку в VBA.Если в ближайшем окне я наберу ? Selection.NumberFormat и нажму Enter, я получу «Общие».Если я делаю то же самое с определенными надстройками (не всеми, не предсказуемыми), выполняющими макрос с точкой останова, я обычно получаю «Стандарт».Что такое "Стандарт"?Откуда это?Я хочу выбрать числовой формат из одной ячейки и поместить его в другую;в случайные моменты я не могу применить «Стандарт» таким образом, и его результат не похож на Общий.(В Excel 2003 он никогда не появляется в непосредственном окне и систематически не применяется.)

  2. Даже если я преобразую все экземпляры «Стандарт» в «Общие», я все еще иногдаполучить ошибку на MyObject.NumberFormat = "General".Я читал в нескольких местах, что лучше применять базовый формат названного формата, то есть General применим к чему-то (как я полагаю, стандарт делает);Каков синтаксис для этого в Excel VBA?

Заранее благодарен за помощь.

1 Ответ

6 голосов
/ 03 сентября 2011

Возможно, это не полное решение, но это начало:

Я считаю, что «Стандарт» - это то, что используется вместо «Общее» в некоторых языках. Вы должны сравнить свои результаты с .NumberFormatLocal.

Для части решения, если вы пытаетесь установить NumberFormat на «General» и получаете ошибки, просто установите NumberForamt на пустую строку. Это автоматически сделает NumberFormat General / Standard.

selection.NumberFormat = ""
...