【问题标题】:Find a row with specific text and delete this and the rest 4 rows below it找到具有特定文本的行并删除它以及它下面的其余 4 行
【发布时间】:2022-01-06 00:51:16
【问题描述】:

我想删除 1000 个文件中的特定单元格区域。

此单元格区域的位置在每个文件中都不相同。有的从 A12 开始,有的从 A20、A21 等开始。

只有一列中有 5 行(行),我想将它们全部删除。

所以,我需要:

01) 找到带有特定文本(“VVVV”)的单元格(第一行)。

02) 选择这个单元格和其余 4 个(下)

03) 删除,选择 SHIFT CELLS UP

起初,我只能让它选择第一行并将其删除(shell 也向上移动)。这是我现在删除其他行的代码,但存在一个问题:

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

End Sub

它删除了比预期更多的行。这意味着“EndRange”值存在问题。也许,我将不得不尝试找到一个选择范围并将其删除的函数。例如如果单元格在“A1:B1”中,我想选择“A1:B1”到“A5:B5”。

【问题讨论】:

  • 在列表中的某处总是一起删除的总要删除 5 行吗?
  • @Mitch 是的。如果它发生变化,我可以自己更改代码。我会换号码的。除非,我让它要求一个整数。但我无法弄清楚这将如何与 MACROS 一起使用。是否会弹出一个窗口要求我输入一个数字?

标签: excel vba


【解决方案1】:

只需一行代码即可完成:

Cells.Find(What:="VVVV").Offset(-4, 0).Resize(5, 1).EntireRow.Delete

【讨论】:

    【解决方案2】:

    请试试这个:

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

    【讨论】:

    • 行得通! Selection.Offset 是如何工作的?你有数字 4 和 0。这意味着它选择了下面的 4 行和右侧的 0 列?
    • 语法是Offset(RowOffset,ColumnOffset)。 Selection.Offset(4, 0).Select 表示将光标向下移动 4 行和 0 列。如果您想向上移动行,您可以使用负输入。 Selection.Offset(-1, 1) 会将光标向上移动一行,向右移动一列。 msdn.microsoft.com/en-us/library/office/ff840060.aspx
    • 谢谢。我找到了。我首先认为它不会获得负面属性。我一直在寻找这个命令 3 个小时。谷歌并不总是有帮助:P
    猜你喜欢
    • 2012-01-26
    • 1970-01-01
    • 2022-08-02
    • 2021-02-19
    • 1970-01-01
    • 2021-11-09
    • 1970-01-01
    • 1970-01-01
    • 2019-09-11
    相关资源
    最近更新 更多