我想将工作簿中每个工作表中指定范围内的空白单元格替换为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
答案 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