Excel 当我运行代码时,只有一个工作表被更新,例如Apple。其他3个工作表未更新。我怎样才能解决这个问题?

Excel 当我运行代码时,只有一个工作表被更新,例如Apple。其他3个工作表未更新。我怎样才能解决这个问题?,excel,vba,Excel,Vba,当我运行代码时,只有一个工作表被更新,例如Apple。其他3个工作表未更新。代码试图将工作表中的零值改为空白。代码在整个宏中运行,但工作表Orange、Grape和Pear没有更新。我怎样才能解决这个问题 Sub ReturnZerosAsBlanks() '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*' 'Declare variables and objects' '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*

当我运行代码时,只有一个工作表被更新,例如Apple。其他3个工作表未更新。代码试图将工作表中的零值改为空白。代码在整个宏中运行,但工作表Orange、Grape和Pear没有更新。我怎样才能解决这个问题

Sub ReturnZerosAsBlanks()

    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Declare variables and objects'
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
       
   'Objects'
    Dim wbk As Workbook
    Dim wsApple As Worksheet
    Dim wsOrange As Worksheet
    Dim wsGrape As Worksheet
    Dim wsPear As Worksheet

       
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Define variables and objects'
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'set workbooks and worksheets'
    Set wbk = ThisWorkbook
    Set wsApple = wbk.Sheets("Apple")
    Set wsOrange = wbk.Sheets("Orange")
    Set wsGrape = wbk.Sheets("Grape")
    Set wsPear = wbk.Sheets("Pear")

    
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Application settings'
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    Application.Calculation = xlCalculationManual
    Application.ScreenUpdating = False
    
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Remove zeros from blank linked cells

    'Column AA:AB in tab Apple
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    
    Dim Rng1 As Range
    Dim WorkRng1 As Range
    On Error Resume Next
    Set WorkRng1 = wsApple(Range("AA2"), Range("AB2").End(xlDown))
    For Each Rng1 In WorkRng1
        If Rng1.Value = 0 Then
        Rng1.Value = ""
    End If
    Next Rng1


    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Remove zeros from blank linked cells

    'Column A:D in tab Orange
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    
    Dim Rng2 As Range
    Dim WorkRng2 As Range
    On Error Resume Next
    Set WorkRng2 = wsOrange.Range(Range("A2"), Range("D2").End(xlDown))
    For Each Rng2 In WorkRng2
        If Rng2.Value = 0 Then
        Rng2.Value = ""
    End If
    Next Rng2

    
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Remove zeros from blank linked cells

    'Column AD in tab Grape
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    
    Dim Rng3 As Range
    Dim WorkRng3 As Range
    On Error Resume Next
    Set WorkRng3 = wsGrape(Range("AD2"), Range("AD2").End(xlDown))
    For Each Rng3 In WorkRng3
        If Rng3.Value = 0 Then
        Rng3.Value = ""
    End If
    Next Rng3
    


    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Remove zeros from blank linked cells

    'Column G in tab Pear
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    
    Dim Rng4 As Range
    Dim WorkRng4 As Range
    On Error Resume Next
    Set WorkRng4 = wsPear.Range(Range("G2"), Range("G2").End(xlDown))
    For Each Rng4 In WorkRng
        If Rng4.Value = 0 Then
        Rng4.Value = ""
    End If
    Next Rng4



    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    'Application settings'
    '*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'*'
    Application.Calculation = xlCalculationAutomatic
    Application.ScreenUpdating = True


End Sub
在多个工作表中替换
选项显式
子空格()
“常数
作为变体的名称
SheetNames=VBA.Array(“苹果”、“橘子”、“葡萄”、“梨”)
Dim Cols作为变体
Cols=VBA.Array(“AA:AB”、“A:D”、“AD”、“G”)
将wb设置为工作簿
将wb=ThisWorkbook设置为包含此代码的工作簿。
'切换应用程序设置
Application.Calculation=xlCalculationManual
Application.ScreenUpdating=False
'从空白链接单元格中删除零。
尺寸ws作为工作表,rng作为范围,cel作为范围,最后一行作为长度,j作为长度
'在工作表名称数组中提供名称的工作表中循环。
对于j=0到UBound(图纸名称)
'定义当前工作表。
设置ws=wb.工作表(图纸名称(j))
'始终使用第一列,计算最后一行。
LastRow=ws.Cells(ws.Rows.Count,ws.Columns(Cols(j)).Column)_
.End(xlUp).Row
如果LastRow<2,则转到下一页
'定义标准范围。
设置rng=ws.Columns(Cols(j)).Rows(2).调整大小(LastRow-1)'1=2-1
“这速度更快,但不适用于公式,尽管您应该这样做
'当单元格中有公式时,不要执行此操作。
替换内容:=0_
替换:=空_
看:=xlother
“这也适用于公式。
'对于rng.单元格中的每个单元格
'如果cel.Value=0,则
'单元格值=空
"完"
“下一个赛尔
下表:
下一个j
'切换应用程序设置。
Application.Calculation=xlCalculationAutomatic
Application.ScreenUpdating=True
'通知用户。
MsgBox“完成”
端接头
在多个工作表中替换
选项显式
子空格()
“常数
作为变体的名称
SheetNames=VBA.Array(“苹果”、“橘子”、“葡萄”、“梨”)
Dim Cols作为变体
Cols=VBA.Array(“AA:AB”、“A:D”、“AD”、“G”)
将wb设置为工作簿
将wb=ThisWorkbook设置为包含此代码的工作簿。
'切换应用程序设置
Application.Calculation=xlCalculationManual
Application.ScreenUpdating=False
'从空白链接单元格中删除零。
尺寸ws作为工作表,rng作为范围,cel作为范围,最后一行作为长度,j作为长度
'在工作表名称数组中提供名称的工作表中循环。
对于j=0到UBound(图纸名称)
'定义当前工作表。
设置ws=wb.工作表(图纸名称(j))
'始终使用第一列,计算最后一行。
LastRow=ws.Cells(ws.Rows.Count,ws.Columns(Cols(j)).Column)_
.End(xlUp).Row
如果LastRow<2,则转到下一页
'定义标准范围。
设置rng=ws.Columns(Cols(j)).Rows(2).调整大小(LastRow-1)'1=2-1
“这速度更快,但不适用于公式,尽管您应该这样做
'当单元格中有公式时,不要执行此操作。
替换内容:=0_
替换:=空_
看:=xlother
“这也适用于公式。
'对于rng.单元格中的每个单元格
'如果cel.Value=0,则
'单元格值=空
"完"
“下一个赛尔
下表:
下一个j
'切换应用程序设置。
Application.Calculation=xlCalculationAutomatic
Application.ScreenUpdating=True
'通知用户。
MsgBox“完成”
端接头

删除“下一步继续执行错误时的
,您将在有问题的行上收到一条错误消息。对于WorkRng中的每个Rng4,此行需要一个4:
您知道Excel中有一个显示零还是空白单元格的设置吗?它按工作表运行。在我的安装中:文件->选项->高级->显示此工作表的选项->在具有零值的单元格中显示零看起来要从代码中执行此操作,实际上必须选择工作表,然后调用
ActiveWindow.DisplayZeros=False
删除
错误恢复时下一步
,您将在有问题的工作表上收到错误消息行。对于WorkRng中的每个Rng4,此行需要一个4:
,您是否知道Excel中有一个显示零还是空白单元格的设置?它按工作表运行。在我的安装中:文件->选项->高级->此工作表的显示选项->在具有零值的单元格中显示零看起来像是从代码中执行此操作您实际上必须选择工作表,然后调用
ActiveWindow.DisplayZeros=False
谢谢VBASIC208,这已经解决了手头的问题!谢谢VBASIC208,这已经解决了手头的问题!