2

我有一个工作表,其中第 2 行被隐藏。一个宏粘贴到这一行。每当我运行这个宏时,隐藏的行就会重新出现。

有没有办法防止该行再次出现?

这是我的代码,它仍然没有隐藏第 2 行

子更新2029()

Dim LSearchRow As Integer
Dim LCopyToRow As Integer
Dim LSearchValue As String

On Error GoTo Err_Execute
Application.ScreenUpdating = False

LSearchValue = InputBox("Please enter a serial number to search for.", "Enter value")

'Start search in row 5
LSearchRow = 5

'Start copying data to row 2 in "Master" (row counter variable)
LCopyToRow = 2

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

    'If value in column A = LSearchValue, copy entire row to "Master"
    If Range("A" & CStr(LSearchRow)).Value = LSearchValue Then

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

        'Paste row into "Master" in row 2
        Sheets("Master").Select
        Rows(CStr(LCopyToRow) & ":" & CStr(LCopyToRow)).Select
        ActiveSheet.PasteSpecial


    End If

    LSearchRow = LSearchRow + 1

Wend

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

MsgBox "All matching data has been copied to 2029."

Exit Sub

Err_Execute: MsgBox "发生错误。" Sheets("Master").Rows("2:2").EntireRowHidden = True ApplicationScreenUpdating = True

End Sub
4

3 回答 3

3

这取决于您在该行中粘贴的方式。

如果你这样做

 Sheet1.Rows(2).Copy Sheet2.Rows(5)

如果第 5 行被隐藏,那么它将在粘贴后取消隐藏。这样做的原因是第 5 行继承了第 2 行的属性。

如果您使用特殊粘贴,则不会。看这个例子

 Sheet1.Rows(2).Copy
 Sheet2.Rows(5).PasteSpecial xlValues

如果您想做 PasteAll(场景 1),那么您将不得不再次隐藏该行,否则继续执行第二段代码。

于 2012-07-27T15:06:23.433 回答
2

假设您要隐藏的行位于名为“Sheet1”的工作表上,以下代码行将隐藏该行:

Sheets("Sheet1").Rows("2:2").EntireRow.Hidden = True
于 2012-07-27T14:08:55.987 回答
1

如果没有看到您的代码,我们无法判断是什么让 Row2 显示。但是,如果您想让它在没有实际解决原因的情况下不显示,您可以执行以下操作:

Application.ScreenUpdating = false在宏的开头插入。

然后在宏的末尾插入此替换 [SheetName] 作为工作表的实际名称:

Sheets("[SheetName]").Rows("2:2").EntireRow.Hidden = True
Application.ScreenUpdating = true

这样,该行将在更新屏幕之前再次隐藏,就像从未发生过一样。

于 2012-07-27T14:22:23.943 回答