2016-11-12 10 views
3

セルの値に応じてカラムを隠すための短いスクリプトを書いています。カラムを隠す速度を最適化する

スクリプトは機能しますが、スクリプトの動作は非常に遅く、多くの場合列の数が多い場合は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

インポッシブル・デ・définirラpropriétéヒドゥン・デ・ラ・クラッセ範囲

(英語では、これはができません範囲クラスの隠しプロパティを設定する

誰も解決策を提案できますか?ご協力いただきありがとうございます。

+0

あなたがそのエラーを取得するときに、列番号は何ですか? – user3598756

答えて

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 
0

ActiveWindow.Visible = Falseあなたのスクリプトの冒頭には、時には大きな違いがあります。

ActiveWindow.Visible = Trueに誤りがあることを確認してください。その後、

+0

私は実行の遅さに関してヒントを提供していました。 – user6788933

関連する問題