Не могли бы вы сообщить мне, каковы параметры формата .NumberFormat
в Excel VBA? Поскольку вы полностью уверены, что Excel 2010 поддерживает следующие типы:
Я знаю, что мы можем указать, например, Тип текста как:
.NumberFormat ="@"
или для числа:
.NumberFormat = "0.00000"
Не могли бы вы сообщить мне, какие другие варианты для типов в VBA?
Заметьте, что это было сделано в 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)
(Я просто выбрал случайную запись для пользовательских)
""
чтобы предотвратить ошибки в vba, использующем этот код.
Благодаря этому вопросу (и ответам) я обнаружил простой способ получить точную строку NumberFormat практически для любого формата, который предлагает Excel.
Шаг 1. В пользовательском интерфейсе установите ячейку в числовой формат, который вы хотите использовать.
В моем примере я выбрал китайскую (КНР) валюту из опций, содержащихся в поле "Формат номеров учетных записей".
Шаг 2. Разверните раскрывающийся список номера и выберите "Дополнительные форматы номеров...".
Шаг 3. На вкладке "Число" в категории выберите "Пользовательский".
В разделе "Пример" показано форматирование валюты Китая (КНР), которое я применил.
В поле ввода "Тип" содержится строка NumberFormat, которую вы можете использовать программно.
Итак, в этом примере цифровая валюта NumberFormat моей китайской (КНР) выглядит следующим образом:
_ [$¥-804]* #,##0.00_ ;_ [$¥-804]* -#,##0.00_ ;_ [$¥-804]* "-"??_ ;_ @_
Если вы делаете эти шаги для каждого нужного формата, тогда мир принадлежит вам.
Надеюсь, это поможет.
В Excel вы можете установить Range.NumberFormat
для любой строки, как вы могли бы найти в выборе "Пользовательский". По сути, у вас есть два варианта:
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)"; } }
}