0

我正在做一个小项目,该项目需要我通过一列搜索一个单词,然后将包含我的单词的整行复制到另一张表中。这是我的代码,也是我目前所拥有的:

    Sub SearchForString2()

    Dim LSearchRow As Integer
    Dim LCopyToRow As Integer

    On Error GoTo Err_Execute

    'Start search in row 4
    LSearchRow = 10

    'Start copying data to row 2 in Sheet2 (row counter variable)
    LCopyToRow = 3

    While Len(Range("J" & CStr(LSearchRow)).Value) > 0

        'If value in column E = "Mail Box", copy entire row to Sheet2
        If Range("M" & CStr(LSearchRow)).Value = "NEW" Then

            'Select row in Sheet1 to copy
            Rows(CStr(LSearchRow) & ":" & CStr(LSearchRow)).Select
            Selection.Copy

            'Paste row into Sheet2 in next row
            Sheets("New2").Select
            Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
            ActiveSheet.Paste

            'Move counter to next row
            LCopyToRow = LCopyToRow + 1

            'Go back to Sheet1 to continue searching
            Sheets("Old").Select

        End If

        LSearchRow = LSearchRow + 1

    Wend

    'Position on cell A3
    Application.CutCopyMode = False
    Range("A3").Select

    MsgBox "OK!"

    Exit Sub

Err_Execute:
    MsgBox "An error occurred."

End Sub

我希望代码仅粘贴所选行的值,没有格式或公式。有什么建议么?提前致谢。

4

2 回答 2

2

尝试这个:

While Len(Range("J" & CStr(LSearchRow)).Value) > 0

    'If value in column E = "Mail Box", copy entire row to Sheet2
    If Range("M" & CStr(LSearchRow)).Value = "NEW" Then

        Sheets("New2").Rows(LCopyToRow).Value = Rows(LSearchRow).Value

        'Move counter to next row
        LCopyToRow = LCopyToRow + 1

    End If

    LSearchRow = LSearchRow + 1
Wend
于 2014-08-03T23:59:48.487 回答
1

除了使用Paste,您可以使用PasteSpecial并指定xlPasteValues将仅粘贴值并忽略其他所有内容。

但是,请注意,这PasteSpecialRange对象的方法,而不是Worksheet.

这些 SO 问题在您的情况下听起来也非常相关:

于 2014-08-03T17:52:46.907 回答