简体   繁体   English

Excel VBA 中的 .NumberFormat 选项是什么?

[英]What are .NumberFormat Options In Excel VBA?

Can you please let me know what are the .NumberFormat format options in Excel VBA?您能否让我知道 Excel VBA 中的.NumberFormat格式选项是什么? As you are fully aware Excel 2010 supports the following types:如您所知,Excel 2010 支持以下类型:

在此处输入图片说明

I know that we can set for example Text type as:我知道我们可以将例如文本类型设置为:

.NumberFormat ="@"

or for number:或数字:

.NumberFormat = "0.00000"

Can you please let me know what are other options for types in VBA?您能否让我知道 VBA 中类型的其他选项是什么?

Note this was done on Excel for Mac 2011 but should be same for Windows请注意,这是在 Excel for 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

Result:结果:

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)

(I just picked a random entry for custom) (我只是随机选择了一个自定义条目)

Thanks to this question (and answers), I discovered an easy way to get at the exact NumberFormat string for virtually any format that Excel has to offer.感谢这个问题(和答案),我发现了一种简单的方法来获取 Excel 必须提供的几乎任何格式的确切 NumberFormat 字符串。


How to Obtain the NumberFormat String for Any Excel Number Format如何获取任何 Excel 数字格式的 NumberFormat 字符串


Step 1 : In the user interface, set a cell to the NumberFormat you want to use.第 1 步:在用户界面中,将单元格设置为您要使用的 NumberFormat。

我手动将单元格格式化为中国 (PRC) 货币

In my example, I selected the Chinese (PRC) Currency from the options contained in the "Account Numbers Format" combo box.在我的示例中,我从“帐号格式”组合框中包含的选项中选择了中国 (PRC) 货币。

Step 2 : Expand the Number Format dropdown and select "More Number Formats...".第 2 步:展开数字格式下拉菜单并选择“更多数字格式...”。

打开数字格式下拉菜单

Step 3 : In the Number tab, in Category, click "Custom".第 3 步:在数字选项卡的类别中,单击“自定义”。

单击自定义

The "Sample" section shows the Chinese (PRC) currency formatting that I applied. “示例”部分显示了我应用的中国 (PRC) 货币格式。

The "Type" input box contains the NumberFormat string that you can use programmatically. “类型”输入框包含可以以编程方式使用的 NumberFormat 字符串。

So, in this example, the NumberFormat of my Chinese (PRC) Currency cell is as follows:因此,在此示例中,我的 Chinese (PRC) Currency 单元格的 NumberFormat 如下所示:

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

If you do these steps for each NumberFormat that you desire, then the world is yours.如果您为您想要的每个 NumberFormat 执行这些步骤,那么世界就是您的。

I hope this helps.我希望这会有所帮助。

dovers gives us his great answer and based on it you can try use it like 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)"; } }
}

In Excel, you can set a Range.NumberFormat to any string as you would find in the "Custom" format selection.在 Excel 中,您可以将Range.NumberFormat设置为您在“自定义”格式选择中找到的任何字符串。 Essentially, you have two choices:基本上,您有两个选择:

  1. General for no particular format.一般没有特定格式。
  2. A custom formatted string, like "$#,##0", to specify exactly what format you're using.自定义格式化字符串,如“$#,##0”,用于准确指定您使用的格式。

The .NET Library EPPlus implements a conversation from the string definition to the built in number. .NET 库EPPlus实现了从字符串定义到内置数字的对话。 See class ExcelNumberFormat :请参阅类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;
    }
}

When you use one of these formats, Excel will automatically identify them as a standard format.当您使用其中一种格式时,Excel 会自动将它们识别为标准格式。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM