2017-07-05 6 views
0

私はExcelワークシートオープンマクロの高速化を目指しています。VBA EXCEL - オンワークシートオープンマクロ用の小規模コード最適化

ワークシートが開かれるたびに、x行を自動修正し、その中に0が入っている行を非表示にします。

マクロはうまく動作しますが、関連するすべての行を非表示にするためには、より高速な方法が必要です。どんな助けもありがとう。

Private Sub Worksheet_Activate() 
    Rows("14:859").EntireRow.AutoFit 
Application.ScreenUpdating = False 
Dim c As Range 
    For Each c In Range("O1:O859").Cells 
     If c.Value = "0" Then 
      c.EntireRow.Hidden = True 
     End If 
    Next c 
Application.ScreenUpdating = True 
End Sub 

答えて

0

このバージョン試してみてください:私は次の行にデバッグエラーを取得しています

Option Explicit 

Private Sub Worksheet_Activate() 
    Const LAST_ROW = 859 
    Const CL = 15    'O column 
    Const RO = 14 
    Const HIDE_ROWS = True 'or False 

    Dim ur As Variant, hr As Range, R As Long 

    Application.ScreenUpdating = False 

    Rows(RO & ":" & LAST_ROW).EntireRow.AutoFit 

    ur = Range(Cells(1, CL), Cells(LAST_ROW, CL)) 
    For R = 1 To LAST_ROW 
    If Len(ur(R, 1)) = 0 Then Exit For 
    If ur(R, 1) = 0 Then 
     If hr Is Nothing Then Set hr = Cells(R, 1) Else: Set hr = Union(hr, Cells(R, 1)) 
    End If 
    Next 
    hr.EntireRow.Hidden = HIDE_ROWS 

    Application.ScreenUpdating = True 
End Sub 
+0

を:上の最初のセルと最後のセルである何ウル(R、C)=「0」が続いて – Vist

+0

場合あなたのシート? –

+0

コアフィルターはセルo1からです:o859 – Vist

関連する問題