VBA仅粘贴值,而不是粘贴所有内容

VBA仅粘贴值,而不是粘贴所有内容,vba,excel,xlsm,Vba,Excel,Xlsm,我正在做一个小项目,它要求我在一列中搜索一个单词,然后将包含我单词的整行复制到另一个工作表中。 这是我的代码,也是我目前所拥有的: Sub SearchForString2() Dim LSearchRow As Integer Dim LCopyToRow As Integer On Error GoTo Err_Execute 'Start search in row 4 LSearchRow = 10 'Start copyi

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

    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

我希望代码只粘贴选定行的值,而不使用格式或公式。有什么建议吗?提前感谢。

您可以使用并指定
xlPasteValues
,而不是使用
Paste
,它将只粘贴值,而忽略其他所有内容

但是,请注意,
PasteSpecial
范围
对象的一种方法,而不是
工作表

因此,这些问题听起来与您的情况也非常相关:


您可以使用并指定
xlPasteValues
,而不是使用
Paste
,它将只粘贴值,而忽略其他所有内容

但是,请注意,
PasteSpecial
范围
对象的一种方法,而不是
工作表

因此,这些问题听起来与您的情况也非常相关:


您可以使用并指定
xlPasteValues
,而不是使用
Paste
,它将只粘贴值,而忽略其他所有内容

但是,请注意,
PasteSpecial
范围
对象的一种方法,而不是
工作表

因此,这些问题听起来与您的情况也非常相关:


您可以使用并指定
xlPasteValues
,而不是使用
Paste
,它将只粘贴值,而忽略其他所有内容

但是,请注意,
PasteSpecial
范围
对象的一种方法,而不是
工作表

因此,这些问题听起来与您的情况也非常相关:

试试这个:

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
试试这个:

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
试试这个:

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
试试这个:

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

@user3100587:很难猜测您到底需要粘贴什么,但如果我理解正确,请尝试将:
ActiveSheet.paste
替换为:
Sheets(“New2”).Selection.paste特殊xlPasteValues
。我尝试了,但仍然有错误。你能告诉我为什么我的代码很难猜吗?!我遗漏了什么吗?@user3100587:您需要类似以下内容:
行(lcopytrow).EntireRow.paste特殊xlPasteValues
,但您的代码还有其他问题。例如,引用范围时未指定它们引用的图纸,因此复制/粘贴功能不清晰,显然无法工作。如果不知道你想要达到什么目标,我很难知道如何给你最好的建议。只需阅读我在帖子中复制的问题和答案,并逐行调试您的应用程序,以确保它符合您的预期。@user3100587:很难猜测您需要粘贴什么,但如果我理解正确,请尝试将:
ActiveSheet.paste
替换为:
Sheets(“New2”).Selection.paste特殊xlPasteValues
。我尝试过,但仍然有错误。你能告诉我为什么我的代码很难猜吗?!我遗漏了什么吗?@user3100587:您需要类似以下内容:
行(lcopytrow).EntireRow.paste特殊xlPasteValues
,但您的代码还有其他问题。例如,引用范围时未指定它们引用的图纸,因此复制/粘贴功能不清晰,显然无法工作。如果不知道你想要达到什么目标,我很难知道如何给你最好的建议。只需阅读我在帖子中复制的问题和答案,并逐行调试您的应用程序,以确保它符合您的预期。@user3100587:很难猜测您需要粘贴什么,但如果我理解正确,请尝试将:
ActiveSheet.paste
替换为:
Sheets(“New2”).Selection.paste特殊xlPasteValues
。我尝试过,但仍然有错误。你能告诉我为什么我的代码很难猜吗?!我遗漏了什么吗?@user3100587:您需要类似以下内容:
行(lcopytrow).EntireRow.paste特殊xlPasteValues
,但您的代码还有其他问题。例如,引用范围时未指定它们引用的图纸,因此复制/粘贴功能不清晰,显然无法工作。如果不知道你想要达到什么目标,我很难知道如何给你最好的建议。只需阅读我在帖子中复制的问题和答案,并逐行调试您的应用程序,以确保它符合您的预期。@user3100587:很难猜测您需要粘贴什么,但如果我理解正确,请尝试将:
ActiveSheet.paste
替换为:
Sheets(“New2”).Selection.paste特殊xlPasteValues
。我尝试过,但仍然有错误。你能告诉我为什么我的代码很难猜吗?!我遗漏了什么吗?@user3100587:您需要类似以下内容:
行(lcopytrow).EntireRow.paste特殊xlPasteValues
,但您的代码还有其他问题。例如,引用范围时未指定它们引用的图纸,因此复制/粘贴功能不清晰,显然无法工作。如果不知道你想要达到什么目标,我很难知道如何给你最好的建议。只要阅读我在帖子中复制的问题和答案,并逐行调试应用程序,以确保它符合您的预期。如果您只关心值,则无需使用
Copy
Paste/PasteSpecial
方法。您可以将值的范围直接写入另一个范围,使用类似以下内容进行尝试:
Sheets(2).range(“A1:B10”).Value=Sheets(1).range(“A1:B10”).Value
如果您只关心值,则无需使用
Copy
Paste/PasteSpecial
方法。您可以将值的范围直接写入另一个范围,使用类似以下内容进行尝试:
Sheets(2).range(“A1:B10”).Value=Sheets(1).range(“A1:B10”).Value<