Excel 公式和非公式单元格均清除零

Excel 公式和非公式单元格均清除零,excel,vba,Excel,Vba,我有两个vba代码,我想合并为一个进程。需要人帮忙吗 第一个代码: Sub DelAllZeros() Application.Calculation = xlCalculationManual Dim ws As Worksheet For Each ws In Worksheets On Error Resume Next Set frange = ws.Cells.SpecialCells(xlCellTypeFormulas)

我有两个vba代码,我想合并为一个进程。需要人帮忙吗

第一个代码

Sub DelAllZeros()

    Application.Calculation = xlCalculationManual

    Dim ws As Worksheet
    For Each ws In Worksheets
        On Error Resume Next

        Set frange = ws.Cells.SpecialCells(xlCellTypeFormulas)
        On Error GoTo 0
        If Not frange Is Nothing Then
            For Each c In frange
                If c.Value = 0 Then
                    c.Formula = ClearContents
                End If
            Next c
        End If
        Set frange = Nothing
    Next ws

End Sub
第二代码:

Sub DelAllZeros1()

Dim ws As Worksheet

    For Each ws In Worksheets
        On Error Resume Next
        ws.Select
        Cells.Replace What:="0", Replacement:="", LookAt:=xlWhole, SearchOrder _
                    :=xlByRows, MatchCase:=False, SearchFormat:=False, ReplaceFormat:=False
    Next ws

End Sub
第一个代码将清除公式单元格中的“0”,第二个代码将清除非公式单元格。

尝试下面的代码(代码注释中的修改)

尝试下面的代码(代码注释中的修改)


试试这个代码。这将在不更改格式的情况下从工作表中使用的范围中清除0

更新:

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
  ws.Cells.Replace what:=0, Replacement:="", _
  LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
  SearchFormat:=False, ReplaceFormat:=False
Next ws

试试这个代码。这将在不更改格式的情况下从工作表中使用的范围中清除0

更新:

Dim ws As Worksheet
For Each ws In ActiveWorkbook.Worksheets
  ws.Cells.Replace what:=0, Replacement:="", _
  LookAt:=xlPart, SearchOrder:=xlByRows, MatchCase:=False, _
  SearchFormat:=False, ReplaceFormat:=False
Next ws

使用文件>选项>高级中的设置,并取消选中“显示零…”设置。此设置基于每张工作表,因此,要对整个工作簿自动执行此设置,请将此代码放入ThisWorkbook模块中

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    ActiveWindow.DisplayZeros = False 
End Sub 

现在,零将不会显示在任何工作表上。

使用“文件>选项>高级”中的设置,并取消选中“显示零…”设置。此设置基于每张工作表,因此,要对整个工作簿自动执行此设置,请将此代码放入ThisWorkbook模块中

Private Sub Workbook_SheetActivate(ByVal Sh As Object) 
    ActiveWindow.DisplayZeros = False 
End Sub 


现在,零将不会显示在任何工作表上。

那么您想要的是清除所有单元格中的“0”(公式还是无公式)?整个工作表的源范围是什么?我想清除整个工作簿中的所有零值。如果任何单元格包含应清除的零(公式或无公式)(如空白)好的,请尝试下面我的答案中的代码,让我知道它是否适用于您。因此,您希望从所有单元格(公式或无公式)中清除“0”?整个工作表的源范围是什么?我想清除整个工作簿中的所有零值。如果任何单元格包含应清除的零(公式或无公式)(如空白)好的,请尝试下面我的答案中的代码,让我知道它是否对您有效谢谢您的帮助,但我在上面的代码中遇到运行时错误。“我们无法对合并的单元格执行此操作”@ayyappankm try now(添加一部分以检查单元格是否合并)非常感谢Shai Rado,它工作很好,但是它的格式也在变化,我不需要清除我的单元格格式。请帮助更改该条件。@ayyappankm什么格式?背景?边界?具体是什么?它正在删除边框谢谢你的帮助,但是我在上面的代码中遇到了运行时错误。“我们无法对合并的单元格执行此操作”@ayyappankm立即尝试(添加了一个部分以检查单元格是否合并)非常感谢Shai Rado,它工作正常,但是它正在更改格式,我不需要清除我的单元格格式。请帮助更改该条件。@ayyappankm什么格式?背景?边界?具体是什么?它正在删除边框不起作用,我需要从整个工作簿中清除0,无论它是否有公式。我已更新代码以替换工作簿中所有工作表中的0。您好,您的代码正在从非公式单元格中删除0,我需要为公式单元格和非公式单元格使用此选项。我已经有了代码(阅读我的问题),但它有2vba代码。1将从非公式中清除0另一个是从公式单元格中清除0。不,它不起作用,我需要从整个工作簿中清除0,无论它是否有公式。我已更新代码以替换工作簿中所有工作表中的0。您好,您的代码正在从非公式单元格中删除0,我需要这个公式和非公式单元格。我已经有了代码(阅读我的问题),但它有2vba代码。1将从非公式中清除0。另一个将从公式单元格中清除。您尝试过吗?激活任何工作表时,它将隐藏所有零。点击任意一张纸。你能看到零值吗?你试过了吗?激活任何工作表时,它将隐藏所有零。点击任意一张纸。你能看到零值吗?