我有这样的代码:
Sub NewSummary()
Set ws = ThisWorkbook.Sheets("Sheet1")
iWorking = 3
iTotal = 4
dPercent = iWorking / iTotal
pPercent = Format(dPercent, Percent)
sWorking = iWorking & " / " & iTotal
sWorking = Format(sWorking)
ws.Cells(1, 1).Value = sWorking
ws.Cells(2, 1).Value = pPercent
End Sub我期望的输出是:
3/ 4,75.00%
但我得到的是:
4-3月,0.75
Excel覆盖了"3 / 4“字符串,并假定我想要一个日期。我如何抑制它呢?为什么格式函数不能将0.75%转换为75.00%?
发布于 2019-08-16 22:42:17
你不能格式化这样的字符串。/周围的THe空格是一个问题,但更普遍的是,将"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发布于 2019-08-16 22:46:59
支持Named numeric formats,但它们不是语言级别的关键字,您可以像使用任何其他变量一样使用它们。如上所述,Percent只是一个保存Variant/Empty值的未声明的局部变量(这意味着您的模块缺少Option Explicit)。
在字符串文字中提供命名格式:
pPercent = Format(dPercent, "Percent")虽然这是可行的,但我个人更喜欢使用explicit number formatting,这样您就可以显式地完全控制数字格式;例如,如果您想要一个小数,或者需要两个以上的小数,使用命名格式将不会有任何影响。
https://stackoverflow.com/questions/57526473
复制相似问题