2017-08-03 91 views
2

我在網上找到了這個VBA代碼。該代碼旨在查找特定文本「Item」,然後刪除具有文本「Item」的單元格及其下面的單元格。代碼一次只能運行一個。我正在處理的列有11,000個數據單元。一次只能做一件事情會花太長的時間。有沒有人知道一種方法來接受這段代碼,並使其在整個列中運行一次?這是代碼。Excel VBA - 通過列重複宏

Sub deleteCells() 
' 
' deleteCells Macro 
' 
' Keyboard Shortcut: Ctrl+s 
' 
Dim StartRange As String 
Dim EndRange As String 
Cells.Find(What:="Item").Select 
StartRange = ActiveCell.Address 
Selection.Offset(1, 1).Select 
EndRange = ActiveCell.Address 
ActiveSheet.Range(StartRange & ":" & EndRange).Select 
Selection.Delete Shift:=xlUp 

End Sub 

在此先感謝!

+0

你有沒有試過一個循環 - 甚至尋找任何一個例子? – pnuts

+0

我做了,我嘗試了一些變化,但我無法按照我想要的方式讓它工作。在編碼方面我還有很多東西需要學習。 –

+0

它有助於發佈至少一次嘗試(如果合適的話,錯誤消息和位置)。 – pnuts

回答

0

您正在刪除使用.address查找的單元格,以查找第一個查找不起作用。只要繼續尋找商品,直到你找不到它。

Option Explicit 

Sub deleteCells() 
    Dim rng As Range, str As String 

    On Error Resume Next 
    str = "Item" 
    With Worksheets("sheet1") 
     Set rng = .Cells.Find(str) 
     Do While Not rng Is Nothing 
      rng.Resize(2, 2).Delete Shift:=xlUp 
      Set rng = .Cells.Find(str) 
     Loop 
    End With 

End Sub 

您應該將更多的參數應用於.Find操作。 VBA的.Find與工作表中的相同,並會繼承用戶使用的選項(又稱參數)。

您還應該限制.Cells到您想要使用的列。你認爲這並不重要,不能包含在你的問題中,所以你可以把這部分弄清楚。

+0

謝謝,我很欣賞這種迴應。有用。我不太瞭解代碼。我打算繼續學習。謝謝回答我的問題。 –