2016-09-21 5 views
1

以下のVBAを持っています。これは、array()式の名前付きタブをすべてループします。私は、代わりに配列()に入力された値を持つのダイナミックレンジになりたい、それはこれらの値を持っているワークシートの範囲を参照し、それは私がよりバリアントvbaの名前付き範囲で配列を定義します。

Sub Filter_To_Send() 

Dim WshtNames As Variant 
Dim WshtNameCrnt As Variant 

WshtNames = Array("RASC", "RSUV", "SBKP", "RGRN", "SBTK", "RWAS", "RABT", "RHAY", "RLEX", "RARM", "RBCK", "RBER", "RCCP", "RDAL", "RHEB", "RSST", "RMST", "RMIA", "REHV", "RNBY", "RNOF", "RUTC", "RSCS", "RSJO", "RSCQ", "RSHA", "RAWP", "SART", "SASK", "SALC", "SNHQ", "SOEX", "SPHL", "SSHP", "SMRN") 

For Each WshtNameCrnt In WshtNames 
With Worksheets(WshtNameCrnt) 
    .Range("A5").AutoFilter field:=16, Criteria1:="<>0" 
End With 
Next WshtNameCrnt 

End Sub 

感謝をダイナミック追加するときに!

答えて

1

シート名のリストは、A1から始まるワークシート「コンフィグ」に保存されている場合:tim.williams @

Sub Filter_To_Send() 

    Dim c As Variant 
    Dim rngSheets As Range 

    With Sheets("Config") 
     Set rngSheets = .Range(.Range("A1"), .Cells(.Rows.Count, 1).End(xlUp)) 
    End with 


    For Each c In rngSheets.Cells 
     With Worksheets(c.Value) 
      .Range("A5").AutoFilter field:=16, Criteria1:="<>0" 
     End With 
    Next c 

End Sub 
+0

- 本当にありがとうございました。私は実行時エラー '9' - 添え字が範囲外で、「ワークシートあり(c.Value)」行に達したときに取得します。 –

+0

これは、アクティブなブックにその名前のワークシートがないことを示します。あなたのワークシートのリストにヘッダーがありますか?はいの場合は、 '.Range(" A1 ")'を.Range( "A2") ' –

+0

に変更します。私は、既存のタブにタブのリストを追加し、それをA1からリストの開始位置に移動しようとしました。しかし、専用のタブを持つ方が簡単だと思います。本当にありがとう!! –

関連する問題