我有一张名为" Staffdb"有两个命名表" PermTBL"和#34; StaffTBL",相同的标题"女孩" " ID" " HIRE_DATE"和"状态"。所有现任和历史悠久的员工都在PermTBL。我想在状态字段中过滤PermTBL,以便" A"意思是活跃的,然后将这些复制到空的StaffTBL。使用状态向下箭头手动过滤PermTBL后,仅选择" A"我进去测试代码并获得明显的部分副本。我的代码是 选项明确
Sub PermTBLtoStaffTBL()
Dim rgnsrc As Range 昏暗的范围
Set rgnsrc = Worksheets("Staffdb").Range("PermTBL")
Set rgndest = Worksheets("Staffdb").Range("StaffTBL")
rgnsrc.SpecialCells(xlCellTypeVisible).Copy rgndest
End Sub
最后,作为附加信息,StaffTBL似乎有隐藏的行,3-7不可见,这似乎与我的遗漏数据相对应。我试图取消隐藏无济于事。关于下一步去哪里的建议?我必须在表格中循环还是在目的地中犯了错误?在这个和第三世界的互联网速度的新,以及无法交付书籍使这一个繁琐的过程。请忍受NewBee。
新的信息,我发现如果我取消隐藏整张纸的正确数据出现在StaffTBL中,当然PermTBL的过滤器也会消失,所以显然我是在正确的轨道上。仍然希望以编程方式(而不是手动)过滤PermTBL的评论和建议。我将继续搜索网站,但任何建议都表示赞赏。
答案 0 :(得分:0)
Sub CopyData()
Dim t As ListObject
Dim t2 As ListObject
Set t = ActiveSheet.ListObjects("PermTBL")
Set t2 = ActiveSheet.ListObjects("StaffTBL")
' Remove all rows from StaffTBL table
If Not t2.DataBodyRange Is Nothing Then
t2.DataBodyRange.Rows.Delete
End If
' Filter Status by "A"
t.DataBodyRange.AutoFilter Field:=4, Criteria1:="A"
' Copy to first cell right below the table's header
t.DataBodyRange.Copy t2.Range(1).Offset(1)
' Remove filter from PermTBL table
t.DataBodyRange.AutoFilter
End Sub
<强>更新强>