【问题标题】:Excel VBA - Macro that creates new worksheets causes weird malfunctionExcel VBA - 创建新工作表的宏会导致奇怪的故障
【发布时间】:2013-02-12 07:47:32
【问题描述】:

我创建了一个宏,它应该向我的 Excel 工作簿添加(比如 100 个)新工作表。这些新的工作表应该这样命名:1%,1.1%,1.2%,1.3%,...,9.9%,10%

Sub AddWorkSheets()
Dim i As Double
For i = 0 To 10 Step 0.1
   Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = i & "%"
Next i
End Sub

当我运行此代码时,起初一切正常 - 它添加了如上所述命名的新工作表。 但它只在工作表5.9% 之前有效。在该工作表之后,所有其他人的名字都像5.999999996.099999997.2999999 等。 有没有人解释为什么会这样?

【问题讨论】:

    标签: vba excel


    【解决方案1】:

    发生这种情况是因为您正在使用带有浮点数学的 for-next 循环,其中无法精确表示小数。

    Tons 关于 SO 的解释,为什么会发生这种情况。下面是一种更正代码的方法。

    Sub AddWorkSheets()
    Dim i As Double
    For i = 0 To 100 Step 1
      Sheets.Add(after:=Worksheets(Worksheets.Count)).Name = round(i/10,1) & "%"
    Next i
    End Sub
    

    【讨论】:

    • 那么Does anyone have an explanation why that happens?
    • 感谢 Luis Siquot 和 Peter L. 的帮助
    猜你喜欢
    • 2017-08-22
    • 2019-06-19
    • 2012-06-07
    • 2023-02-14
    • 1970-01-01
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多