Excel - VBA对象不支持此属性或方法 - 粘贴 - Excel

时间:2012-07-30 22:30:41

标签: excel vba excel-vba

给我带来麻烦的是“”表格(CStr(WS_M.Cells(n,START_C)))。单元格(n,START_C).Paste“”

这应该在第3列中找到选项卡名称,然后转到该选项卡并将选项卡名称粘贴到该选项卡中。

    Const START_C = 3
    Const MAX_TRAN = 1000
    Const START_R = 2
    Const MASTER = "MASTER"

    Sub MOVEDATACORRECTLY()

    Dim WS_M As Worksheet
    Dim thisWB As Workbook
    Set thisWB = ActiveWorkbook
    Set WS_M = Worksheets(MASTER)

    For M = START_R To (START_R + MAX_TRAN)
        If WS_M.Cells(M, (START_C + 1)) = "" Then Exit For

    Next M

    M = M - 1

    For n = START_R To M
       WS_M.Cells(n, START_C).Copy
       Sheets(CStr(WS_M.Cells(n, START_C))).Cells(n, START_C).Paste      

    Next n

    End Sub

2 个答案:

答案 0 :(得分:1)

请改为尝试:

For n = START_R To M
       WS_M.Cells(n, START_C).Copy
       Sheets(CStr(WS_M.Cells(n, START_C))).Cells(n, START_C).Select
       ActiveSheet.Paste
Next n

如果您查看Excel Range对象的documentation,则Paste不在成员列表中。但是有PasteSpecial。我没有尝试过,但这也可能有用。

答案 1 :(得分:1)

要在Excel中复制一系列单元格,使用Copy方法会使VBA程序更容易崩溃/或提供不可预测的结果。

假设在您的程序中从system clipboard复制数据并且用户正在尝试store some other to system clipboard!

并非总是如此,但是从用户那里可能会发生这种错误。

所以我总是喜欢使用更好的方法,例如Swaping the range on the fly。这是一个小型演示:

Public Sub Sample_Copy_without_Clipboard()
    Dim dRange As Range, iRange As Range
    Set iRange = Range("A1:B3")
    Set dRange = Range("D1:E3")
    dRange.Value = iRange.Value
End Sub

注意:此方法仅适用于未格式化的文本数据。如果没有,请使用Tim的建议或DanM的答案。