【问题标题】:vba copy listobject table to listobject tablevba 复制 listobject 表到 listobject 表
【发布时间】:2018-12-31 15:13:11
【问题描述】:

对 VBA 有点陌生,我已经搜索了可以结合尝试解决问题的代码。我正在构建一个“任务跟踪器”,它使用任务的目标表 (TargetTbl) 来显示动态甘特图。 Ttbl 可以手动修改以用于日常任务管理,也可以每年从重复出现的大头钉的源表 (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 表中的经验,复制的公式即使相同,也会引用源表,然后将其应用于目标表中的所有现有行. 我发现在这种情况下,简单的剪切和粘贴宏对我来说并不可靠。

提前感谢您的帮助,John H

【问题讨论】:

  • 嗨,约翰,欢迎来到 SO,如果您没有完成帖子,您可以随时按帖子标签下方的编辑。

标签: vba excel listobject


【解决方案1】:

您对变量的命名有误:

Set TargetTblLastRow = TargetTbl.ListRows.Add

不是

Set TargetTblLastRow = Ttbl.ListRows.Add

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

又一个例子说明为什么Option Explicit 很好......

【讨论】:

  • 谢谢克里斯,我可以将国内的失明归咎于变量 miss-name 并进行了更改(谢谢),但我不确定您的选项明确/暗淡的评论是什么?
  • Option Explicit 要求声明所有变量(或引发编译错误)。它会将Ttbl 称为“未定义变量”
  • 我现在明白了。在您对细节更正给予了宝贵的关注后,当我运行它时,我仍然会遇到错误。我注释掉了我的错误捕获并得到“下标超出范围”
  • 我在一张包含适当表格的表格上运行了您的代码 sn-p,它运行文件。检查您的工作表选择和表名拼写。
  • 感谢测试,让我放心了,我一直认为这将是一个逻辑问题(很高兴错了)。当您提到“工作表选择”时,这会是什么样子?我目前在目标表上有一个宏按钮。我需要选择源表吗?
猜你喜欢
  • 1970-01-01
  • 2019-05-14
  • 2019-05-04
  • 1970-01-01
  • 1970-01-01
  • 2015-03-21
  • 2016-07-20
  • 2021-05-04
  • 2020-01-29
相关资源
最近更新 更多