从单元格和dynamic名称工作表名称工作表

在下面的代码中,我通过使用“Ship”标准从“效率”表单中提取数据,在“运送”表单上构build表格。 我想通过使用像Application.ActiveSheet.Name = .Range("A2")东西来dynamic地从单元格命名“发货”工作表,然后使用类似Set wsShip = Worksheets.Range("A2") ,我也想使用一个dynamic的标准来提取数据,所以不是使用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 

 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'