如何将数据从范围复制到表的最后一行(转置)?

时间:2019-02-04 05:52:57

标签: excel vba

大家好,我回来了关于我的第二个VBA初学者问题(与以前的项目相同)

信息: 2张-数据库和条目

两者都包含与Entry换位相同的两个表(行标题而不是列标题)

我的目标是将条目中的数据复制到数据库的最后一行,同时添加另一行。理想情况下,应该有一种方法可以直接在数据输入中复制公式中的公式(或格式化数据库列以包含它们)

之后,数据将在数据库中排序和过滤,因此需要一个表。我在整个ListObject方面遇到了真正的麻烦,并了解了它的工作原理。

返回运行时错误1004:在此行上,范围类的PasteSpecial方法失败:

tbl.Range(LastRow).PasteSpecial Paste:=xlValues, Transpose:=True

但是,如果我将该行更改为:
Sheets("Database").ListObjects("Entire").PasteSpecial Paste:=xlValues, Transpose:=True

我遇到运行时438(对象不支持此属性或方法)错误,我发现这很混乱,因为它们应该是同一件事

感谢您的帮助或建议,我们将不胜感激!也有点题外话,但如果您知道有什么好的资源,我可以购买以改善,随时告诉我。

  Private Sub CommandButton2_Click()

Dim Entry As Worksheet
  Set Entry = ActiveSheet

Dim tbl As ListObject
  Set tbl = Sheets("Database").ListObjects("Entire")

Dim LastRow As Integer
  LastRow = tbl.Range.Rows.Count

Application.ScreenUpdating = False
    If Entry.Range("E9") = "y" Then
        Entry.Range("E6:E100").Copy
        tbl.ListRows.Add AlwaysInsert:=True
        tbl.Range(LastRow).PasteSpecial Paste:=xlValues, Transpose:=True

        Entry.Columns("E").Delete
    Else
        Entry.Columns("E").Delete
    End If
Application.ScreenUpdating = True

End Sub

1 个答案:

答案 0 :(得分:1)

很容易意外地在Excel中清除剪贴板,因此(可能)应该始终在.Copy之前立即调用.Paste/.PasteSpecial。更改

的顺序
Entry.Range("E6:E100").Copy
tbl.ListRows.Add AlwaysInsert:=True

解决了问题。