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”
:)