Excel VBA - 创建新工作表的宏会导致奇怪的故障

时间:2013-02-26 18:12:21

标签: excel vba excel-vba

我创建了一个宏,应该将新工作表添加(比方说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

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

1 个答案:

答案 0 :(得分:6)

这是因为您正在使用具有浮点数学的for-next循环,其中无法准确表示小数。

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

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