2016-12-29 167 views
1

enter image description here我有兩個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

所以你想要清除所有細胞(公式或非公式)「0」?你的源範圍是什麼,整個工作表? –

+0

我想清除整個工作簿中的所有零值。如果任何單元格包含零(公式或非公式),應該清除(如空白) –

+0

好的,請嘗試在我的答案下面的代碼,讓我知道它是否適合你 –

回答

0

嘗試下面的代碼(代碼註釋裏面修改)

Option Explicit 

Sub DelAllZerosCombined() 

    Application.Calculation = xlCalculationManual 

    Dim ws As Worksheet, c As Range, Rng As Range 

    For Each ws In Worksheets 
     ' set range to occupied range in worksheet (save time in loop) 
     Set Rng = ws.Range("A1:" & ws.Cells.SpecialCells(xlCellTypeLastCell).Address) 

     If Not Rng Is Nothing Then 
      For Each c In Rng 
       If c.Value = 0 Then 
        ' unmerge "merged" cells 
        If c.MergeCells Then c.UnMerge 

        c.ClearContents 
       End If 
      Next c 
     End If 
     Set Rng = Nothing 

    Next ws 
    ' resume setting 
    Application.Calculation = xlCalculationAutomatic 

End Sub 
+0

感謝您的幫助,但我越來越運行「我們不能這樣做到合併單元格」 –

+0

@ayyappankm現在嘗試(添加一個部分來檢查單元格是否合併) –

+0

非常感謝Shai Rado,它的工作正常,但它的變化格式也需要,我需要不要清除我的單元格格式。請幫助改變這種情況。 –

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

沒有它的不工作,我需要清除整個工作簿中的0是否具有公式或者沒有公式 –

+0

我已更新代碼以在工作簿中的所有工作表中替換0。 – sn152

+0

嗨你的代碼是從非公式單元格中刪除0,我需要這個公式和非公式單元格。我已經有了代碼(閱讀我的問題),但它有2vba代碼。 1將從非公式中清除0,另一個是從公式單元格中清除。 –

0

使用的文件>選項>高級設置,取消選中 「顯示零...」 設置。此設置在每片的基礎上,所以,至自動執行它的整個工作簿,把這個代碼到的ThisWorkbook模塊

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

現在零將不會在任何片顯示。

+0

代碼是所有excel工作所必需的workbooj –

+0

您是否嘗試過?當**任何**表被激活時,它將隱藏所有的零。點擊任何表單。你能看到任何零值嗎? – teylyn