4

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

このコードを実行すると、最初はすべて正常に機能します。上記の名前の新しいワークシートが追加されます。ただし、ワークシートまでしか機能しません5.9%。そのワークシートの後、他のすべての人は、、など5.99999999の名前を取得します。なぜそれが起こるのか誰かが説明を持っていますか?6.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 に答える