用单元格值进行VBA舍入

用单元格值进行VBA舍入,vba,rounding,Vba,Rounding,我试图将列AD:AD中的每个填充单元格四舍五入到4位小数,并在下一个单元格为空时结束 我原以为这样可以,但它在cell.value上出错了 Sub Round_4() For Each cell In [AD:AD] If cell = "" Then Exit Sub cell.Value = WorksheetFunction.Round(cell.Value, 4) Next cell 端接头 有什么建议吗?您只能使用 Range("AD1", Range("AD1")

我试图将列AD:AD中的每个填充单元格四舍五入到4位小数,并在下一个单元格为空时结束

我原以为这样可以,但它在cell.value上出错了

Sub Round_4()
For Each cell In [AD:AD]
    If cell = "" Then Exit Sub
    cell.Value = WorksheetFunction.Round(cell.Value, 4)
Next cell 
端接头


有什么建议吗?

您只能使用

Range("AD1", Range("AD1").End(xlDown)).Value = Evaluate("round(" & Range("AD1", Range("AD1").End(xlDown)).Address & ",4)")
注意,这是使用Activesheet引用。您可以在语句中换行,给出父工作表。

您可以这样做:

Dim myCell As Range
Dim myRange As Range

Set myRange = Excel.Application.ThisWorkbook.Worksheets(worksheetNameGoesHereInDoubleQuotes).Range("AD:AD")

For Each myCell In myRange
    If Not IsEmpty(myCell) Then
        myCell.Value = Application.WorksheetFunction.Round(CDbl(myCell.Value), 4)
    'me being lazy with my range assignment
    ElseIf IsEmpty(myCell) Then
        Exit For
    End If
Next

它对我有用。。。您得到的错误是什么。。。尝试将变量单元格重命名为其他内容。。。如果myCell包含文本,则单元格可能是关键字。还有,IsEmptymyCell-missing Not?@BigBen因为OP没有声明其他,所以我假设所有单元格都是数字,但OP也没有声明它们都是数字。我试图将AD:AD列中的每个填充单元格四舍五入到4位小数,并在下一个单元格为空时结束。大量信息假设它们都是数字。如果它们都是数字,那么为什么cell.Value=WorksheetFunction.Roundcell.Value,4会抛出错误?我的观点是,防守更安全。填充的单元格不等同于数字单元格。