大家好,我回来了关于我的第二个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
答案 0 :(得分:1)
很容易意外地在Excel中清除剪贴板,因此(可能)应该始终在.Copy
之前立即调用.Paste/.PasteSpecial
。更改
Entry.Range("E6:E100").Copy
tbl.ListRows.Add AlwaysInsert:=True
解决了问题。