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

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

这应该find列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 

试试这个:

 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对象的文档 ,则Paste不在成员列表中。 有PasteSpecial ,但是。 我还没有尝试过,但也可能工作。

要在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的build议或DanM的回答。