VBA将列表对象表复制到列表对象表

时间:2018-07-24 05:34:56

标签: excel vba excel-vba listobject

对VBA有点陌生,我已经搜索了一些可以结合起来解决问题的代码。我正在构建一个使用任务的目标表(TargetTbl)来显示动态甘特图的“任务跟踪器”。可以手动修改Ttbl以进行日常任务管理,还可以每年从重复发源的Source表(SourceTbl)中进行更新,以减少工作量。我的目标是使用ListObjects复制要添加到目标表(TargetTbl)底部的源表(SourceTbl)。
以下代码错误-在第-1行出现错误

Sub UPDATEpa()

'dimensioning    Source table (SourceTbl)
'                Target table (TargetTbl)
'                Target table add row to last row (TargetTblLastRow)

Dim SourceTbl As ListObject
Dim TargetTbl As ListObject
Dim TargetTblLastRow As Variant

On Error GoTo ErrHandler

Set SourceTbl = ActiveSheet.ListObjects("RepeatActivities")
Set TargetTbl = ActiveSheet.ListObjects("Activity")
Set TargetTblLastRow = Ttbl.ListRows.Add

    SourceTbl.DataBodyRange.Copy
    TargetTblLastRow.Range.PasteSpecial xlPasteValues

Exit Sub
ErrHandler:
    MsgBox "An error has occured at line " & i - 1 & " or" & i, , "Error Macro"
End Sub

我可能会以错误的方式进行操作。基于其他帖子,我注意到,VBA需要以特定方式编写,以减少自动复制脚本中的错误。我想知道是否需要检查和复制每个单元格/值?

此外,根据我手动粘贴到作为ListObject的表的经验,公式中复制的公式即使相同,也会引用源表,然后将其强加于目标表的所有现有行中。 我发现在这种情况下,简单的剪切和粘贴宏无法可靠地为我工作。

感谢您的提前帮助,约翰·H

1 个答案:

答案 0 :(得分:0)

您没有为变量命名:

Set TargetTblLastRow = TargetTbl.ListRows.Add

不是

Set TargetTblLastRow = Ttbl.ListRows.Add

此外,最好使用正确的类型Dim TargetTblLastRow As ListRow

还有一个Option Explicit为什么很好的例子...