繁体   English   中英

VBA EXCEL-针对工作表上的打开宏的小代码优化

[英]VBA EXCEL - Small code optimization for on-worksheet open macro

我希望加快在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

试试这个版本:

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM