Wat zijn .NumberFormat-opties in Excel VBA?

Kun je me alsjeblieft laten weten wat de .NumberFormatformaatopties zijn in Excel VBA? Zoals u weet ondersteunt Excel 2010 de volgende typen:

Ik weet dat we bijvoorbeeld Teksttype kunnen instellen als:

.NumberFormat ="@"

of voor nummer:

.NumberFormat = "0.00000"

Kun je me alsjeblieft laten weten wat andere opties zijn voor typen in VBA?


Antwoord 1, autoriteit 100%

Let op: dit werd gedaan in Excel voor Mac 2011, maar zou hetzelfde moeten zijn voor 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

Resultaat:

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)

(Ik heb zojuist een willekeurige invoer gekozen voor aangepast)


Antwoord 2, autoriteit 26%

Dankzij deze vraag (en antwoorden) heb ik een gemakkelijke manier ontdekt om de exacte NumberFormat-tekenreeks te krijgen voor vrijwel elk formaat dat Excel te bieden heeft.


Hoe u de NumberFormat String voor elk Excel-nummerformaat kunt verkrijgen


Stap 1: stel in de gebruikersinterface een cel in op de NumberFormat die u wilt gebruiken.

In mijn voorbeeld heb ik de Chinese (PRC) valuta geselecteerd uit de opties in de keuzelijst “Rekeningnummers formaat”.

Stap 2: Vouw de vervolgkeuzelijst Getalnotatie uit en selecteer “Meer getalnotaties…”.

Stap 3: Klik op het tabblad Nummer in Categorie op “Aangepast”.

Het gedeelte ‘Voorbeeld’ toont de Chinese (PRC) valutanotatie die ik heb toegepast.

Het invoervak “Type” bevat de tekenreeks NumberFormat die u programmatisch kunt gebruiken.

Dus in dit voorbeeld is de NumberFormat van mijn Chinese (PRC) Currency-cel als volgt:

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

Als je deze stappen uitvoert voor elke NumberFormat die je wenst, dan is de wereld van jou.

Ik hoop dat dit helpt.


Antwoord 3, autoriteit 9%

doversgeeft ons zijn geweldige antwoord en op basis daarvan kun je proberen het te gebruiken zoals

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

Antwoord 4, autoriteit 6%

In Excel kunt u een Range.NumberFormatinstellen op elke tekenreeks, zoals u zou vinden in de “Aangepaste” indelingsselectie. In wezen heb je twee keuzes:

  1. Algemeenvoor geen bepaalde indeling.
  2. Een aangepaste opgemaakte tekenreeks, zoals “$#,##0”, om precies aan te geven welke indeling u gebruikt.

Antwoord 5, autoriteit 4%

De .NET-bibliotheek EPPlusimplementeert een gesprek van de tekenreeksdefinitie naar de ingebouwde nummer.
Zie klasse ExcelNumberFormat:

internal static int GetFromBuildIdFromFormat(string format)
{
    switch (format)
    {
        case "General":
            return 0;
        case "0":
            return 1;
        case "0.00":
            return 2;
        case "#,##0":
            return 3;
        case "#,##0.00":
            return 4;
        case "0%":
            return 9;
        case "0.00%":
            return 10;
        case "0.00E+00":
            return 11;
        case "# ?/?":
            return 12;
        case "# ??/??":
            return 13;
        case "mm-dd-yy":
            return 14;
        case "d-mmm-yy":
            return 15;
        case "d-mmm":
            return 16;
        case "mmm-yy":
            return 17;
        case "h:mm AM/PM":
            return 18;
        case "h:mm:ss AM/PM":
            return 19;
        case "h:mm":
            return 20;
        case "h:mm:ss":
            return 21;
        case "m/d/yy h:mm":
            return 22;
        case "#,##0 ;(#,##0)":
            return 37;
        case "#,##0 ;[Red](#,##0)":
            return 38;
        case "#,##0.00;(#,##0.00)":
            return 39;
        case "#,##0.00;[Red](#,#)":
            return 40;
        case "mm:ss":
            return 45;
        case "[h]:mm:ss":
            return 46;
        case "mmss.0":
            return 47;
        case "##0.0":
            return 48;
        case "@":
            return 49;
        default:
            return int.MinValue;
    }
}

Als u een van deze indelingen gebruikt, identificeert Excel ze automatisch als een standaardindeling.

Other episodes