numberformat formatnumber change excel vba excel-vba excel-2010

formatnumber - ¿Qué son las opciones de.NumberFormat en Excel VBA?



numberformat vba text (4)

En Excel, puede establecer un Range.NumberFormat en cualquier cadena como encontraría en la selección de formato "Personalizado". Esencialmente, tienes dos opciones:

  1. General para ningún formato particular.
  2. Una cadena con formato personalizado, como "$ #, ## 0", para especificar exactamente qué formato está usando.

¿Puede indicarme cuáles son las opciones de formato .NumberFormat en Excel VBA? Como sabe perfectamente, Excel 2010 admite los siguientes tipos:

Sé que podemos establecer, por ejemplo, el tipo de texto como:

.NumberFormat ="@"

o por número:

.NumberFormat = "0.00000"

¿Podrías decirme cuáles son otras opciones para los tipos en VBA?


Gracias a esta pregunta (y respuestas), descubrí una manera fácil de obtener la cadena exacta NumberFormat para prácticamente cualquier formato que Excel tenga para ofrecer.

Cómo obtener la cadena NumberFormat para cualquier formato numérico de Excel

Paso 1 : en la interfaz de usuario, configure una celda para el NumberFormat que desea usar.

En mi ejemplo, seleccioné la moneda china (PRC) de las opciones que figuran en el cuadro combinado "Formato de números de cuenta".

Paso 2 : expanda el menú desplegable Formato de número y seleccione "Más formatos de número ...".

Paso 3 : en la pestaña Número, en Categoría, haga clic en "Personalizar".

La sección "Muestra" muestra el formato de moneda china (PRC) que apliqué.

El cuadro de entrada "Tipo" contiene la cadena NumberFormat que puede utilizar mediante programación.

Entonces, en este ejemplo, la celda de moneda NumberFormat of my Chinese (PRC) es la siguiente:

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

Si haces estos pasos para cada NumberFormat que desees, entonces el mundo es tuyo.

Espero que esto ayude.


Tenga en cuenta que esto se hizo en Excel para Mac 2011, pero debería ser el mismo para 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

Resultado:

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)

(Acabo de elegir una entrada aleatoria para personalizar)


Dovers nos da su gran respuesta y en base a ella puedes intentar usarla como

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)"; } } }