Что такое параметры .NumberFormat в Excel VBA?

42

Не могли бы вы сообщить мне, каковы параметры формата .NumberFormat в Excel VBA? Поскольку вы полностью уверены, что Excel 2010 поддерживает следующие типы:

Изображение 266

Я знаю, что мы можем указать, например, Тип текста как:

.NumberFormat ="@"

или для числа:

.NumberFormat = "0.00000"

Не могли бы вы сообщить мне, какие другие варианты для типов в VBA?

  • 3
    Почему бы вам не записать макрос и проверить?
  • 2
    Смотрите это также jonvonderheyden.net/excel/…
Показать ещё 3 комментария
Теги:
excel-vba
excel
excel-2010

4 ответа

59

Заметьте, что это было сделано в Excel для Mac 2011, но должно быть одинаковым для Windows

Macro:

Sub numberformats()
  Dim rng As Range
  Set rng = Range("A24:A35")
  For Each c In rng
    Debug.Print c.NumberFormat
  Next c
End Sub

Результат:

General     General
Number      0
Currency    $#,##0.00;[Red]$#,##0.00
Accounting  _($* #,##0.00_);_($* (#,##0.00);_($* "-"??_);_(@_)
Date        m/d/yy
Time        [$-F400]h:mm:ss am/pm
Percentage  0.00%
Fraction    # ?/?
Scientific  0.00E+00
Text        @
Special     ;;
Custom      #,##0_);[Red](#,##0)

(Я просто выбрал случайную запись для пользовательских)

  • 2
    «Бухгалтерия должна быть исключена "" чтобы предотвратить ошибки в vba, использующем этот код.
  • 0
    Мне нужно знать, что вы имели в виду под «сбежал». Вы говорите, что нам нужно заключить в кавычки двойную кавычку (-), чтобы это работало в VBA?
Показать ещё 1 комментарий
14

Благодаря этому вопросу (и ответам) я обнаружил простой способ получить точную строку NumberFormat практически для любого формата, который предлагает Excel.


Как получить строку NumberFormat для любого формата номера Excel


Шаг 1. В пользовательском интерфейсе установите ячейку в числовой формат, который вы хотите использовать.

Изображение 3762

В моем примере я выбрал китайскую (КНР) валюту из опций, содержащихся в поле "Формат номеров учетных записей".

Шаг 2. Разверните раскрывающийся список номера и выберите "Дополнительные форматы номеров...".

Изображение 3763

Шаг 3. На вкладке "Число" в категории выберите "Пользовательский".

Изображение 3764

В разделе "Пример" показано форматирование валюты Китая (КНР), которое я применил.

В поле ввода "Тип" содержится строка NumberFormat, которую вы можете использовать программно.

Итак, в этом примере цифровая валюта NumberFormat моей китайской (КНР) выглядит следующим образом:

_ [$¥-804]* #,##0.00_ ;_ [$¥-804]* -#,##0.00_ ;_ [$¥-804]* "-"??_ ;_ @_ 

Если вы делаете эти шаги для каждого нужного формата, тогда мир принадлежит вам.

Надеюсь, это поможет.

3

В Excel вы можете установить Range.NumberFormat для любой строки, как вы могли бы найти в выборе "Пользовательский". По сути, у вас есть два варианта:

  • Общие для конкретного формата.
  • Пользовательская форматированная строка, например "$ #, ## 0", чтобы точно указать формат, который вы используете.
2

dovers дает нам отличный ответ, и на его основе вы можете попробовать использовать его как

public static class CellDataFormat
{
        public static string General { get { return "General"; } }
        public static string Number { get { return "0"; } }

        // Your custom format 
        public static string NumberDotTwoDigits { get { return "0.00"; } }

        public static string Currency { get { return "$#,##0.00;[Red]$#,##0.00"; } }
        public static string Accounting { get { return "_($* #,##0.00_);_($* (#,##0.00);_($* \" - \"??_);_(@_)"; } }
        public static string Date { get { return "m/d/yy"; } }
        public static string Time { get { return "[$-F400] h:mm:ss am/pm"; } }
        public static string Percentage { get { return "0.00%"; } }
        public static string Fraction { get { return "# ?/?"; } }
        public static string Scientific { get { return "0.00E+00"; } }
        public static string Text { get { return "@"; } }
        public static string Special { get { return ";;"; } }
        public static string Custom { get { return "#,##0_);[Red](#,##0)"; } }
}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню