Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 在Visual Basic for Excel 2007中,如何选择包含特定模式的行?_Vba_Excel_Excel 2007 - Fatal编程技术网

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

Vba 在Visual Basic for Excel 2007中,如何选择包含特定模式的行?,vba,excel,excel-2007,Vba,Excel,Excel 2007,我想用Visual Basic编写一个程序,查看工作表的L列,搜索L列中包含“123”的单元格。然后,我想选择L列中包含“123”的行,复制它们,并将它们粘贴到新的工作表中。我该怎么做?我创建了一个宏,但我不确定如何更改它,以便可以找到多个项并获取这些多个项的所有行。下面是宏给我的部分信息: Columns("L:L").Select Selection.Find(What:="123", After:=ActiveCell, LookIn:=xlFormulas, _ LookAt:=

我想用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

查找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

您可能希望c.值(如“123”)与OP使用的Find的xlPart一致。@Dick我至少使用了15个字符来表示同意。