2

行 2 が非表示になっているワークシートがあります。この行にマクロが貼り付けられます。このマクロを実行すると、非表示の行が再表示されます。

行が再表示されないようにする方法はありますか?

これは私のコードで、まだ行 2 を再表示しています

サブ Update2029()

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) を実行する場合は、行を再度非表示にする必要があります。それ以外の場合は、2 番目のコードに進みます。

于 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 に答える