首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >隐藏和取消隐藏切换按钮-运行速度非常慢

隐藏和取消隐藏切换按钮-运行速度非常慢
EN

Stack Overflow用户
提问于 2018-08-01 23:05:00
回答 2查看 220关注 0票数 0

我有一个包含12个工作表的工作簿,并且我在每个工作表中放置了一个用于隐藏/取消隐藏行的命令按钮。为了隐藏特定的行,我在列A中为需要隐藏的每一行键入了"A“。所以代码可以工作,但它永远运行,需要很长时间,并且隐藏或取消隐藏行的速度非常慢。在某些工作表中,要检查的总行数为100,而在某些工作表中,要检查的总行数为750。请告诉我运行缓慢的原因,或者有没有更好的方法可以让它工作得更快。以下是代码:

代码语言:javascript
复制
Private Sub CommandButton1_Click()
Sheet2.Unprotect ("aaa")
Dim rng As Range
Dim iRow As Range
Dim hidden_status As Boolean

CommandButton1.Caption = "Show / Hide Guidelines"

On Error Resume Next

   Set rng = Range("A1:A750")
    For Each iRow In rng.Rows
        If iRow.Text = "A" Then
           With iRow.EntireRow
                 hidden_status = .Hidden
                .Hidden = Not hidden_status
           End With
        End If
    Next iRow

On Error GoTo 0
Sheet2.Protect ("aaa")
End Sub
EN

回答 2

Stack Overflow用户

发布于 2018-08-01 23:11:46

每次隐藏一行时,Excel都会停下来更新您的屏幕(并可能执行计算)。因此,为了真正加快速度,请禁用所有屏幕更新和应用程序事件(包括计算),直到您完成隐藏。

因此,有了这样的Sub:

代码语言:javascript
复制
Private Sub SetUpdates(ByVal newState As Boolean)
    With Application
        .ScreenUpdating = newState
        .EnableEvents = newState
        .DisplayAlerts = newState
    End With
End Sub

你可以这样做:

代码语言:javascript
复制
Private Sub CommandButton1_Click()
    SetUpdates newState:=False

    '--- hide your rows here

    SetUpdates newState:=True
End Sub
票数 3
EN

Stack Overflow用户

发布于 2018-08-01 23:34:06

您可以使用AutoFilter

此过程将隐藏A列中不包含值的任何行,无论传递给它的是哪个工作表引用。如果过滤器已经被应用,它将删除它。

代码语言:javascript
复制
Public Sub HideA(wrkSht As Worksheet)

    With wrkSht
        If .FilterMode Then
            .ShowAllData
        Else
            .Range("A1", .Cells(.Rows.Count, 1).End(xlUp)) _
                .AutoFilter Field:=1, Criteria1:="=", VisibleDropDown:=False
        End If
    End With

End Sub

在包含按钮的每个工作表上,为该按钮添加以下代码(根据需要重命名该过程):

代码语言:javascript
复制
Private Sub CommandButton1_Click()
    HideA ActiveSheet
End Sub  

这样做的一个缺点是它不会在过滤中包含单元格A1

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51636675

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档