我做了一个宏,它将一个表复制到其他各个页面,然后在这些页面上将这些粘贴的表排序到特定的日期范围。我的问题是知道新复制的表的表名。我试图做一个简单的计数,但是分配给列表对象的默认数字显然不是按时间顺序排列的。当我复制到第199个表时,复制的下一个表是1100,而不是200 ...
粘贴到工作表上的表是该表上的唯一表,因此我认为我应该能够分配名称或获取自动分配的名称。我怎么做?还是我需要以完全不同的方式复制表?
Option Explicit
Dim DutyQueue As Worksheet
Dim MonthQueue As Worksheet
Dim tblNum As Integer
Dim tblOld As Integer
Dim intWSCount As Integer
Dim intmonth As Date
Dim endmonth As Date
Sub CopyMonthlyDutyLoop()
Set DutyQueue = ThisWorkbook.Worksheets("Duty Queue")
For intWSCount = 4 To 15
Set MonthQueue = ThisWorkbook.Worksheets(intWSCount)
tblNum = DutyQueue.Cells(1, 1)
ThisWorkbook.Worksheets(intWSCount).Activate
tblOld = MonthQueue.Cells(1, 1)
intmonth = MonthQueue.Cells(1, 2)
endmonth = MonthQueue.Cells(1, 3)
'copy table from Duty Queue
DutyQueue.Range("Table1[#All]").Copy ThisWorkbook.Worksheets(intWSCount).Range("A2")
'sort for all tasks due for the month
tblNum = tblNum + 1
Worksheets(intWSCount).ListObjects("Table_I_Just_Copied").Range.AutoFilter Field:=5, Criteria1:="<=" & intmonth, Operation:=xlAnd, Criteria2:="<=" & endmonth
DutyQueue.Cells(1, 1) = tblNum
MonthQueue = Worksheets(intWSCount).ListObjects("Table_I_Just_Copied").Name
Next intWSCount
End Sub
您可以使用表的索引来引用表(与任何集合一样),如果工作表上只有一个表,则识别该表将变得更加简单,即:
Worksheets("nnn").listobjects(1).name
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句