2017-09-07 7 views
0

行に「 - 」がある場合は、アクティブシート内の行を非表示にするスクリプトを作成しました。これを他のシート(Sheet-ABC、Sheet-DEF)にも適用したいと思います。私は配列を使用しようとしましたが、失敗しました。Excel VBA、アクティブなシートだけでなく特定のシートを更新する

何か助けていただければ幸いです。

Sub hideRows() 
Application.ScreenUpdating = False 
Application.EnableEvents = False 
Application.Calculation = xlCalculationManual 
Application.DisplayAlerts = False 


Dim cell, cell2 As Range, hRws As Range 
Set Rng = Sheet15.Range("A52:L359") 

Rng.EntireRow.Hidden = False 

For Each cell In Range("A52:L359").SpecialCells(xlBlanks) 
If cell = "-" And cell.Offset(-1, 0) = "-" Then 
If hRws Is Nothing Then 
Set hRws = Range(cell, cell.Offset(1, 0)) 

Else 
Set hRws = Union(hRws, Range(cell, cell.Offset(1, 0))) 
End If 
End If 
Next 

If Not hRws Is Nothing Then hRws.EntireRow.Hidden = True 

Application.Calculation = xlCalculationAutomatic 
Application.DisplayAlerts = True 
Application.ScreenUpdating = True 
Application.EnableEvents = True 

End Sub 
+0

うーん - 「 - 」 'あなたは空白のセルをループしている場合、'の値をどのように多くを持っているのだろうか? – YowE3K

答えて

0

forループ内でhideRows()メソッドを呼び出すことができます。このような何か:

Dim ws As Worksheet For Each ws In ActiveWorkbook.Worksheets hideRows() Next

+0

'hideRows'の問題が修正されるまで、(a)一つのワークシートに行が隠れていて、潜在的に違うものに隠れてしまうような空白のセルをループしています。 b)あなたは 'hideRows'にどのワークシートを処理させるかを知らせないので(c)OPはすべてのワークシートではなく特定のワークシートを処理したいだけです(つまり、おそらく' For Each ws In ActiveWorkbook.Worksheets(Array "Sheet-ABC"、 "Sheet-DEF")))。 – YowE3K

+1

良い点YowE3Kは、家に帰ると後で編集しようとします。 – Kevin

+0

私はYowE3Kの提案を成功させました。アクティブなワークシートのみが影響を受けます。 – user328533

関連する問題