我在网上找到了这个 VBA 代码。该代码旨在查找特定文本“Item”,然后删除具有文本“Item”的单元格及其下方的单元格。该代码有效,但一次只有一个。我正在处理的列有 11,000 个数据单元。一次去一个会花费太长时间。有谁知道一种方法来获取此代码并使其在整个列中运行一次?这是代码。
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
提前致谢!
最佳答案
您正在删除您找到的单元格,因此使用 .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 限制为要使用的列。您认为这还不够重要,无法包含在您的问题中,因此您可以弄清楚那部分。
关于vba - Excel VBA - 通过列重复宏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45494490/