在Visual Basic for Excel 2007中,如何选择包含特定模式的行?

时间:2010-09-22 18:25:21

标签: vba excel-vba excel-2007 excel

我想在Visual Basic中编写一个程序,我在其中查看工作表的L列,并在列L中搜索包含“123”的单元格。然后,我想在列L中选择包含“123”的行,复制它们,然后将它们粘贴到新的工作表中。我该怎么做?我创建了一个宏,但我不知道如何更改它,以便我可以找到多个项目并获取这些多个项目的所有行。这是宏给我的部分内容:

Columns("L:L").Select
Selection.Find(What:="123", After:=ActiveCell, LookIn:=xlFormulas, _
    LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlNext, _
    MatchCase:=False, SearchFormat:=False).Activate
Rows("1058:1058").Select
Selection.Copy
Sheets("123").Select
Rows("4:4").Select
range("C4").Activate
Selection.Insert Shift:=xlDown
Rows("5:5").Select
range("C5").Activate

1 个答案:

答案 0 :(得分:3)

查找L列中的所有123并将相应的行复制到Sheet2 根据需要调整。

Sub CopyRows()
  Dim FoundRange As Range
  Dim c As Range

  For Each c In Application.Intersect(Columns("L"), UsedRange)
    If c.Value like "*123*" Then
      If FoundRange Is Nothing Then
        Set FoundRange = c
      Else
        Set FoundRange = Application.Union(FoundRange, c)
      End If
    End If
  Next

  If Not FoundRange Is Nothing Then
    FoundRange.EntireRow.Copy Worksheets("Sheet2").Range("A4")
  End If

End Sub