2013-02-26 68 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