4

我创建了一个宏,应该将(比如 100 个)新工作表添加到我的 excel 工作簿中。这些新工作表应该这样命名: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

当我运行此代码时,起初一切正常 - 它添加了如上所述命名的新工作表。但它只适用于 worksheet 5.9%。在该工作表之后,所有其他人都会得到类似5.999999996.099999997.2999999的名称。有没有人解释为什么会发生这种情况?

4

1 回答 1

6

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

这里有大量关于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
于 2013-02-26T18:17:53.883 回答