vba - Excel VBA - 通过列重复宏

标签 vba excel

我在网上找到了这个 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/

相关文章:

excel - 删除无关单元格时需要停止 UDF 重新计算

excel - 使用 EXCEL 将十六进制字符转换为 ASCII 字符

excel - 检测自动过滤器更改

matlab - VBA Excel制作序列号数组

vba - 计算特定长度的单词数量

javascript - 下载 XLSX 已损坏

vba - Excel自定义函数中,如何编辑下一个单元格的值

vba - 如何将包含多张幻灯片的 PowerPoint 文件拆分为多个文件,每个文件一张幻灯片?

VBA 运行时错误 91。设置对象变量时出现问题

vba - 无法让 Application.Run 工作