簡體   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