将所有工作表中指定范围的空白单元格替换为0

时间:2019-05-16 08:13:09

标签: excel vba

我想将工作簿中每个工作表中指定范围内的空白单元格替换为0。非常感谢您的帮助。

使用该代码,它可以与当前活动的工作表一起正常工作,但不能在其他工作表中循环。

Sub Zero()    
    Dim ws As Worksheet
    Dim r As Range
    Dim cell As Range

    For Each ws In Worksheets
        Set r = Range("AB37:AQ52")
        For Each cell In r
            If cell.Value = "" Then cell.Value = 0
        Next cell
    Next ws
End Sub

2 个答案:

答案 0 :(得分:0)

您几乎已经拥有了它,没有引用每个工作表,只是引用了您正在使用的工作表,您需要使用ws

    Option Explicit
    Sub Zero()

        Dim ws As Worksheet
        Dim r As Range

        For Each ws In ThisWorkbook.Sheets
            Set r = ws.Range("AB37:AQ52")
            r.Cells.Replace vbNullString, 0, LookAt:=xlWhole
        Next ws

    End Sub

此外,您无需循环范围,只需使用Replace函数即可。

答案 1 :(得分:0)

如果单元格为空白,则可以使用SpecialCells(xlCellTypeBlanks)

Option Explicit

Sub ReplaceBlanksWithZeros()
    Dim BlankCells As Range
    On Error Resume Next
    Set BlankCells = Range("AB37:AQ52").SpecialCells(xlCellTypeBlanks)
    On Error GoTo 0

    If Not BlankCells Is Nothing Then
        BlankCells.Value = 0
    End If
End Sub