Excel VBA舍入

Excel VBA舍入,excel,rounding,vba,Excel,Rounding,Vba,我试图使用下面的代码将选定范围内的每个单元格替换为该范围内单元格的舍入数,但我继续得到一个错误 Sub add_round() Dim rng As Range For Each rng In Selection rng.Value = Round(rng.Value, -4) Next rng End Sub 谢谢大家! 我相信您需要自己制作此函数,如下所示(我不知道VBA中有一个函数可以作为Excel的本机舍入函数,它允许您舍入到最接近的1000等): 或

我试图使用下面的代码将选定范围内的每个单元格替换为该范围内单元格的舍入数,但我继续得到一个错误

Sub add_round()
Dim rng As Range
    For Each rng In Selection
        rng.Value = Round(rng.Value, -4)
    Next rng

End Sub

谢谢大家!

我相信您需要自己制作此函数,如下所示(我不知道VBA中有一个函数可以作为Excel的本机舍入函数,它允许您舍入到最接近的1000等):

或者,您可以告诉VBA使用本机Excel函数,如下所示:

Sub add_round()

Dim rng As Range
    For Each rng In Selection
        rng.Value = Application.WorksheetFunction.Round(rng.Value, - 4)
    Next rng

End Sub

为什么你认为小数点后有-4位是有意义的?您希望执行什么操作?
Round()
函数无法接收十进制位置的负值。我想你是在尝试接近十次方,你能在之前和之后显示一个吗?@KatR很高兴我能提供帮助-如果这回答了你的问题,那么别忘了点击这个答案分数旁边的“回答”。
Sub add_round()

Dim rng As Range
    For Each rng In Selection
        rng.Value = Application.WorksheetFunction.Round(rng.Value, - 4)
    Next rng

End Sub