【问题标题】:In Visual Basic for Excel 2007, how do I select rows that contain a certain pattern?在 Visual Basic for Excel 2007 中,如何选择包含特定模式的行?
【发布时间】:2010-09-23 04:56:58
【问题描述】:

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

【问题讨论】:

    标签: vba excel excel-2007


    【解决方案1】:

    在 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
    

    【讨论】:

    • 您可能希望 If c.Value Like "123" 与 Find OP 正在使用的 xlPart 一致。
    • @Dick 我使用至少 15 个字符来表示同意。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-04
    相关资源
    最近更新 更多