繁体   English   中英

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

[英]How to Copy Data from range to last row in table (transposed)?

大家好,我回来回答我的第二个初学者 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

这很容易不小心清除Excel中的剪贴板,所以你应该(可能)随时拨打.Copy之前.Paste/.PasteSpecial 改变顺序

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

解决了这个问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM