Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel VBA中的.NumberFormat选项是什么?_Excel_Vba - Fatal编程技术网

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

Excel VBA中的.NumberFormat选项是什么?,excel,vba,Excel,Vba,您能告诉我Excel VBA中的.NumberFormat格式选项是什么吗?如您所知,Excel 2010支持以下类型: 我知道我们可以将示例文本类型设置为: .NumberFormat ="@" 或编号: .NumberFormat = "0.00000" 您能告诉我VBA中的其他类型选项吗?注意,这是在Excel for Mac 2011上完成的,但在Windows上应该是相同的 宏: Sub numberformats() Dim rng A

您能告诉我Excel VBA中的.NumberFormat格式选项是什么吗?如您所知,Excel 2010支持以下类型:

我知道我们可以将示例文本类型设置为:

.NumberFormat ="@"
或编号:

.NumberFormat = "0.00000"

您能告诉我VBA中的其他类型选项吗?

注意,这是在Excel for Mac 2011上完成的,但在Windows上应该是相同的

宏:

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)
我刚刚在Excel中为custom

选择了一个随机条目,您可以将Range.NumberFormat设置为任何字符串,就像您在custom format(自定义格式)选择中找到的那样。基本上,您有两种选择:

通用,无特殊格式。 自定义格式的字符串,如$,0,用于精确指定您使用的格式。
多亏了这个问题和答案,我发现了一种简单的方法,可以获得Excel提供的任何格式的确切数字格式字符串

如何获取任何Excel数字格式的NumberFormat字符串 步骤1:在用户界面中,将单元格设置为要使用的NumberFormat

在我的示例中,我从“帐号格式”组合框中包含的选项中选择了中国货币

步骤2:展开“数字格式”下拉列表并选择更多数字格式

步骤3:在“编号”选项卡的“类别”中,单击“自定义”

示例部分显示了我应用的中国货币格式

类型输入框包含可编程使用的NumberFormat字符串

因此,在本例中,我的中国货币单元格的NumberFormat如下所示:

_ [$¥-804]* #,##0.00_ ;_ [$¥-804]* -#,##0.00_ ;_ [$¥-804]* "-"??_ ;_ @_ 
如果你按照你想要的每一个数字格式来做这些步骤,那么这个世界就是你的了

我希望这能有所帮助。

多佛斯给了我们一个很好的答案,在此基础上,你可以试着像这样使用它

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)"; } }
}
NET库实现了从字符串定义到内置数字的对话。 见课堂:

内部静态int GetFromBuildFromFormatString格式 { 开关格式 { 一般情况: 返回0; 案例0: 返回1; 案例0.00: 返回2; 案例,0: 返回3; 案例,0.00: 返回4; 案例0%: 返回9; 案例0.00%: 返回10; 案例0.00E+00: 返回11; 案例?/?: 返回12; 案例???: 返回13; 案件年月日: 返回14; 案例d-mmm-yy: 返回15; 案例d-mmm: 返回16; 案例mmm yy: 返回17; 案例h:mm上午/下午: 返回18; 案例h:mm:ss AM/PM: 返回19; 案例h:mm: 返回20; 案例h:mm:ss: 返回21; 案例m/d/yy h:mm: 返回22; 大小写,0;,0: 返回37; 大小写,0;[红色],0: 返回38; 案例,0.00;,0.00: 返回39; 外壳,0.00;[红色],: 返回40; 案例mm:ss: 返回45; 外壳[h]:毫米:不锈钢: 返回46; 案例mmss.0: 返回47; 案例0.0: 返回48; 案例@: 返回49; 违约: 返回int.MinValue; } }
当您使用其中一种格式时,Excel会自动将其识别为标准格式。

为什么不记录一个宏并进行检查?在“格式单元格”对话框中也可以看到这一点,单击所需的格式类型,例如“会计”,然后单击“自定义”。右下角的列表显示当前会计'格式字符串以及其他字符串。上面的文本框显示该项的NumberFormat字符串。你可以直接从文本框中复制/粘贴到代码中的字符串中。谢谢Ken,这正是我想要的。这是我创建的一个有点愚蠢但色彩鲜艳的自定义格式预览网页:需要转义会计的s,以防止使用该代码的vba中出现错误。我需要知道“转义”是什么意思。你是说为了在VBA中工作,我们需要双重引用hashmark吗?就我个人而言,我更喜欢&chr34&-它更干净。我尝试过你的方法,但虽然我确实找到了我想要的格式,但世界仍然不是我的。请提出建议;你完全正确。我年轻时的乐观情绪没有变老!