2010-09-22 58 views
1

我想在Visual Basic中編寫一個程序,在那裏查看工作表的L列,並搜索列L中包含「123」的單元格。然後,我想要選擇列L中包含「123」的行,將它們複製並粘貼到新的工作表中。我將如何做到這一點?我創建了一個宏,但我不知道如何改變它,以便我可以找到多個項目並獲取這些項目的所有行。以下是宏的部分內容:在Visual Basic for Excel 2007中,如何選擇包含特定模式的行?

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 

回答

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 
+1

您可能需要如果c.Value像「* 123 *」與Find the OP正在使用的xlPart一致。 – 2010-09-22 20:16:31

+0

@Dick我使用至少15個字符來認同你。 – GSerg 2010-09-22 20:58:05