首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略VBA格式化函数

忽略VBA格式化函数
EN

Stack Overflow用户
提问于 2019-08-16 22:31:34
回答 2查看 88关注 0票数 1

我有这样的代码:

代码语言:javascript
复制
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%?

EN

回答 2

Stack Overflow用户

发布于 2019-08-16 22:42:17

你不能格式化这样的字符串。/周围的THe空格是一个问题,但更普遍的是,将"3/4"格式化为字符串文字依赖于某种隐式类型转换,在本例中,它被假定为日期字符串(在美国地区表示3月4日),这就是为什么您会得到类似日期的结果。

简单地做:

代码语言:javascript
复制
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
票数 2
EN

Stack Overflow用户

发布于 2019-08-16 22:46:59

支持Named numeric formats,但它们不是语言级别的关键字,您可以像使用任何其他变量一样使用它们。如上所述,Percent只是一个保存Variant/Empty值的未声明的局部变量(这意味着您的模块缺少Option Explicit)。

在字符串文字中提供命名格式:

代码语言:javascript
复制
pPercent = Format(dPercent, "Percent")

虽然这是可行的,但我个人更喜欢使用explicit number formatting,这样您就可以显式地完全控制数字格式;例如,如果您想要一个小数,或者需要两个以上的小数,使用命名格式将不会有任何影响。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57526473

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档