Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/15.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/jenkins/5.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格式函数被忽略_Excel_Vba - Fatal编程技术网

Excel VBA格式函数被忽略

Excel VBA格式函数被忽略,excel,vba,Excel,Vba,我有以下代码: 子新闻摘要() 设置ws=ThisWorkbook.Sheets(“Sheet1”) i工作=3 iTotal=4 d百分比=i工作/i总计 Perpercent=格式(百分比,百分比) sWorking=i工作&“/”&iTotal sWorking=格式(sWorking) ws.Cells(1,1).Value=sWorking ws.Cells(2,1).Value=1分 端接头 我期望的输出是: 3/4,75.00% 但我得到的是: 3月4日,0.75 Excel正在

我有以下代码:

子新闻摘要()
设置ws=ThisWorkbook.Sheets(“Sheet1”)
i工作=3
iTotal=4
d百分比=i工作/i总计
Perpercent=格式(百分比,百分比)
sWorking=i工作&“/”&iTotal
sWorking=格式(sWorking)
ws.Cells(1,1).Value=sWorking
ws.Cells(2,1).Value=1分
端接头
我期望的输出是:
3/4,75.00%

但我得到的是:
3月4日,0.75


Excel正在覆盖“3/4”字符串,并假设我想要一个日期。我该如何抑制它?为什么格式化函数不能将0.75%转换为75.00%?

这样的字符串不能格式化。
/
周围的空格是一个问题,但更一般地说,将
“3/4”
格式化为字符串文字依赖于某种隐式类型转换,在本例中,假定它是一个日期字符串(在美国语言环境中代表3月4日),这就是为什么会得到类似日期的结果

简单地做:

Option Explicit

Sub NewSummary()
    Dim ws As Worksheet

    Dim iWorking As Long, iTotal As Long
    Dim dPercent As Double
    Set ws = ThisWorkbook.Sheets("Sheet1")

    iWorking = 3
    iTotal = 4
    dPercent = iWorking / iTotal
    ws.Cells(1, 1).Value = Format(dPercent, "0.00%")

End Sub
支持,但它们不是语言级别的关键字,您可以像使用任何其他变量一样使用它们。如上所述,
Percent
只是一个未声明的局部变量,它包含一个
变量/空
值(这意味着您的模块缺少
选项Explicit

以字符串文字形式提供命名格式:

pPercent = Format(dPercent, "Percent")

虽然这是可行的,但我个人更喜欢使用这种方式,这样你就可以对数字格式进行明确和完全的控制;例如,如果您想要一个小数点,或者需要两个以上的小数点,使用命名格式将无法将其剪切。

您的输出是在单元格中还是在即时窗口中?如果在单元格中,您可能需要检查单元格格式。代码中声明或分配的
百分比在哪里?提示:不是。所以它是一个空的变体。您应该
Dim
所有变量(在模块顶部使用
Option Explicit
将有助于强制执行此操作,并且您可以切换IDE设置以使其成为默认设置)。@Dean-在两个单元格中,工作表的A1和A21@DavidZemens根据格式(“0.981”,“百分比”)结果是:“98.10%”,所以我就是这么做的,但你不是这么做的。您执行了
Percent
(作为一个空变量,其计算结果为
vbNullString
),它不是
“Percent”
:)