excel - VBA 格式化函数被忽略

标签 excel vba

我有这个代码:

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%

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

Excel 覆盖“3/4”字符串并假设我想要一个日期。我该如何压制它?为什么 Format 函数不能将 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

关于excel - VBA 格式化函数被忽略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57526473/

相关文章:

excel - 将几个参数传递给 sub

vba - 嵌套 If 语句有问题

excel - Groovy 脚本挂起

excel - MS Excel 在单元格中显示额外的连字符

excel - 使用错误处理程序,如果用户第一次无法使用该表单,则可以让用户尝试再次提交该表单

javascript - 如何使用 VBA 定位 onmouseover 元素?

excel - 具有 OR 和 AND 条件的唯一过滤器

基于在另一个表中查找代码和值的 Excel 总和

vba - ActiveX 控件命令按钮代码名称的虚假更改

excel - 在 Excel 中查找多个文本