2013-02-26 67 views
4

我创建了一个应该添加(比如100)新工作表到我的Excel工作簿的宏。这些新的工作表应该是这样命名的:1%,1.1%,1.2%,1.3%,...,9.9%,10%Excel VBA-创建新工作表的宏导致奇怪的故障

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.99999999,6.09999999,7.2999999等名称。 有没有人有解释为什么发生这种情况?

回答

6

这会发生,因为您正在使用浮点数学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 
+0

又是怎么回事'没有人有一个解释,为什么出现这种情况' – 2013-02-26 18:18:47

+0

感谢您的代码 - 现在它按预期工作;?) – bluebox 2013-02-26 18:21:12

+1

@classifire所以你需要运行的代码 - 不解释? – 2013-02-26 18:21:45