web-dev-qa-db-fra.com

Que sont les options .NumberFormat dans Excel VBA?

Pouvez-vous s'il vous plaît laissez-moi savoir quelles sont les options de formatage .NumberFormat dans Excel VBA? Comme vous le savez parfaitement, Excel 2010 prend en charge les types suivants:

enter image description here

Je sais que nous pouvons définir par exemple le type de texte comme suit:

.NumberFormat ="@"

ou pour numéro:

.NumberFormat = "0.00000"

Pouvez-vous s'il vous plaît laissez-moi savoir quelles sont les autres options pour les types dans VBA?

42
user1760110

Notez que ceci a été fait sur Excel pour Mac 2011 mais devrait être identique pour 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

Résultat:

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)

(Je viens de choisir une entrée aléatoire pour la coutume)

65
doovers

Grâce à cette question (et à ses réponses), j'ai découvert un moyen simple d'obtenir exactement la chaîne NumberFormat correspondant à pratiquement tous les formats proposés par Excel.


Comment obtenir la chaîne NumberFormat pour tout format de nombre Excel


Étape 1 : Dans l'interface utilisateur, définissez une cellule sur NumberFormat que vous souhaitez utiliser.

I manually formatted a cell to Chinese (PRC) currency

Dans mon exemple, j'ai sélectionné la devise chinoise (RPC) parmi les options de la liste déroulante "Format des numéros de compte".

Étape 2 : Développez la liste déroulante Format du nombre et sélectionnez "Plus de formats de chiffres ...".

Open the Number Format dropdown

Étape 3 : Dans l'onglet Nombre, dans Catégorie, cliquez sur "Personnalisé".

Click Custom

La section "Exemple" affiche le format de devise chinoise (RPC) que j'ai appliqué.

La zone de saisie "Type" contient la chaîne NumberFormat que vous pouvez utiliser par programme.

Ainsi, dans cet exemple, le NumberFormat de ma cellule de devise chinoise (RPC) est le suivant:

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

Si vous suivez ces étapes pour chaque NumberFormat que vous désirez, le monde vous appartient.

J'espère que ça aide.

16
Kevin Lee Garner

dovers nous donne sa bonne réponse et vous pouvez essayer de l'utiliser comme 

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

Dans Excel, vous pouvez définir un Range.NumberFormat pour n’importe quelle chaîne, comme dans la sélection de format "Personnalisé". Vous avez essentiellement deux choix:

  1. Général pour aucun format particulier.
  2. Une chaîne mise en forme personnalisée, telle que "$ #, ## 0", permet de spécifier exactement le format utilisé.
4
DougM

La bibliothèque .NET EPPlus implémente une conversation de la définition de chaîne au numéro intégré . Voir classe 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;
    }
}

Lorsque vous utilisez l'un de ces formats, Excel les identifie automatiquement en tant que format standard.

0
ice1e0