2016-03-31 15 views
0

以下のコードでは、「出荷」シートの表を条件「出荷」を使用して「効率」シートから引き出します。私はApplication.ActiveSheet.Name = .Range("A2")のようなものを使って、 "Shipped"シートをセルから動的に名前を付けて、Set wsShip = Worksheets.Range("A2")のようなものを使ってシートを呼び出すのに使って、データを引き出すための動的基準を使いたいので、Criteria1:="Ship"使用するCriteria1:=.Range("A3")これを行うには/別の方法がありますか?セルからのダイナミックな名前シートワークシートの呼び出し名

Sub DataTable() 
    Dim wsEff As Worksheet 
    Dim wsShip As Worksheet  
    ''Application.ActiveSheet.Name = Range("A2") 
    'Need ' Set wsShip = Worksheets(Range("A2"))? 
    Set wsShip = Worksheets("Shipped") 
    Set wsEff = Worksheets("Efficiency") 
    With wsEff 
     Dim lRow As Long 
     lRow = .Range("A" & .Rows.Count).End(xlUp).Row 
     .Range("A1:H" & lRow).AutoFilter Field:=2, Criteria1:="Ship" 
     Dim rngCopy As Range 
     'All Columns A:H 
     Set rngCopy = .Columns("A:H") 
     'filtered rows, not including header row - assumes row 1 is headers 
     Set rngCopy = Intersect(rngCopy, .Range("A1:H" & lRow), .Range("A1:H" & lRow).Offset(1)).SpecialCells(xlCellTypeVisible) 
     rngCopy.Copy 
     End With 
    wsShip.Range("A4").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False   
     Worksheets("Efficiency").ShowAllData 
    End Sub 
+0

あなたは彼らに変数や店舗の事を宣言する方法を知っています。再びそれを行う。 – findwindow

+0

*シートの名前を変更する*または正しいシートを参照するためにセル値を使用するだけでは不明です。後者の場合、2番目にコメントアウトされた行はOKで、A2から取りたいシートを指定する必要があります。 –

+0

私は両方をしたいです。セル参照を使用してシートの名前を変更し、シート名を動的に呼び出すことができます。私はシート名をハードにプログラムしたくありません。 – Kish

答えて

1
Set wsShip = Worksheets("Shipped") 
Set wsEff = Worksheets("Efficiency") 

wsShip.Name = wsEff.Range("A2").Value 'for example 

wsShip.Activate 'changing the name doesn't change the reference to 
       ' the sheet you have in 'wsShip' 
+0

ありがとうございます、これは単にシート自体とは独立したソースを使用しています。 – Kish

関連する問題