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

blu*_*box 4 excel vba excel-vba

我已经创建了一个宏,应该在我的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
Run Code Online (Sandbox Code Playgroud)

当我运行此代码时,一切正常 - 它添加了如上所述命名的新工作表.但它只适用于工作表5.9%.该工作表毕竟人得到这样的名字5.99999999,6.09999999,7.2999999等等.有没有人解释为什么会这样?

Lui*_*uot 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
Run Code Online (Sandbox Code Playgroud)