优化隐藏列的速度

时间:2016-11-12 09:29:04

标签: excel vba excel-vba

我编写了一个简短的脚本,用于根据单元格值隐藏列。

该脚本可以正常工作,但它很慢并且通常是Excel错误,其中列数很大,例如> 200列。

Sub Bouton_hidingColumns()
Dim NumColonne As Integer

For NumColonne = Range("I11").Column To Range("IH11").Column Step 3
    If WorksheetFunction.Sum(Range(Cells(11, NumColonne), Cells(119, NumColonne))) = 0 Then
         Columns(NumColonne).Resize(, 3).Hidden = True
    End If
Next NumColonne

End Sub

列数高时脚本失败的示例: Msgbox from Excel

  

ImpossiblededéfinirlapropriétéHiddende la classe Range

(英文,这是无法设置范围类的隐藏属性

有人可以提出解决方案吗?提前感谢您的帮助。

2 个答案:

答案 0 :(得分:3)

测试然后隐藏在单次拍摄中对我来说没关系

Sub OneWay()

Dim rng1 As Range
Dim rng2 As Range
Dim rng3 As Range

Set rng1 = Range("I11:IH119")
For Each rng2 In rng1.Columns
    If rng2.Column Mod 3 = 0 Then
       If Application.Sum(rng2) = 0 Then
          If Not rng3 Is Nothing Then
              Set rng3 = Union(rng3, rng2.Resize(, 3))
          Else
               Set rng3 = rng2.Resize(, 3)
          End If
       End If
    End If
Next

If Not rng3 Is Nothing Then rng3.EntireColumn.Hidden = True

End Sub

答案 1 :(得分:0)

在脚本开头的

ActiveWindow.Visible = False有时会产生很大的不同。

确保放好 错误捕获时ActiveWindow.Visible = True