2017-12-18 8 views
0

まず、Excelやその他のアプリケーションで使用されるマクロとvbaについては何も知りません。私は、インターネットからコピーしてシート1に次のコードを実行した:すなわち、シート1が、同じコードではなく、異なる範囲で正常に動作している同じワークシート_異なる範囲のコードをシート2で使用できない

Option Explicit 
Private Sub Worksheet_Activate() 
    Dim r As Range, c As Range 
    Set r = Range("a129:a1675") 
    Application.ScreenUpdating = False 
    For Each c In r 
    If Len(c.Text) = 0 Then 
    c.EntireRow.Hidden = True 
    Else 
     c.EntireRow.Hidden = False 
    End If 
    Next c 

    Application.ScreenUpdating = True 
End Sub 

コード。 "a5:a100"はシート2で機能していません。

シート1のコードを非アクティブにする必要がありますか?事前に

おかげで、 よろしく、 ID

+0

これは読みにくいので、コードブロックを追加することを検討してください。 –

+0

はい。 Activateイベントは、1枚のシートがアクティブになったときに発生します。一度に複数のシートを有効にすることはできません。イベントが発生したときにコードが実行され、その発生はコードを持つシートに限定されます。 Activateイベントで実行するコードを持たないシートは、アクティベートされたときに何かをする機会がありません。 – Variatus

+0

ブックシートのアクティベートイベントを確認してください。 – SJR

答えて

0

あなたは)このような一つのサブを作成し、例Module1' (you will have to insert it: Right-click in the Project explorer while selecting the workbook's VBA project, select挿入and module`のために、標準のコードモジュールに配置することがあります。

Option Explicit 

Sub HideRows(Rng As Range) 

    Dim Ws As Worksheet 
    Dim R As Long 

    Application.ScreenUpdating = False 
     With Rng 
      Set Ws = .Worksheet 
      For R = 1 To .Rows.Count 
       Ws.Rows(.Row).EntireRow.Hidden = Not CBool(Len(.Cells(R))) 
      Next R 
     End With 
    Application.ScreenUpdating = True 
End Sub 

は、引数として異なる範囲がそれぞれ、すべてのワークシートから同じサブ影響することを呼び出します。

Option Explicit 

Private Sub Worksheet_Activate() 
    HideRows Range("A1:A1675") 
End Sub 

考えられるのは、範囲には1つの列しかないということです。複数列の範囲を指定すると、行のステータスは各行の最後のセルの内容に依存します。

関連する問題