运行“粘贴”时会显示VBA运行时错误438

我只是熟悉VBA和我的代码

For k = 3 To ThisWorkbook.Sheets.Count ThisWorkbook.Sheets(k).Activate ActiveSheet.Cells(11, 2).Select lLastRow = Cells(Rows.Count, 1).End(xlUp).Row ActiveSheet.Range("A5:" & "A" & CStr(lLastRow)).Copy ' ThisWorkbook.Sheets(1).Cells("B" & CStr(lFirstRow) & ":B" & CStr(lLastRow)).Select ThisWorkbook.Sheets(1).Activate ActiveSheet.Cells(lFirstRow, 2).Select Selection.Paste 'Selection.PasteSpecial Paste:=xlPasteValues 'Selection.PasteSpecial Paste:=xlPasteFormats lFirstRow = lFirstRow + lLastRow Next k 

使“运行时错误438”对象不支持此porperty或方法“出现在”Selection.Paste“行时。 什么问题?:(我试过使用粘贴特殊的,激活工作表和select单元格(不是范围),使用Cstr,但没有任何改变

尝试Selection.PasteSpecial xlPasteAll

Paste本身可以在几个对象上工作,最显着的就是Worksheet但是不在Range对象上,这就是你的Selection

要粘贴到一个Range你真的必须使用PasteSpecial方法及其'可用的参数,如xlPasteAll ; xlPasteValues ; xlPasteFormulas ; xlPasteFormats和其他,你可以通过按F1来查看光标在VBE的PasteSpecial中。

在代码中replace这两行

 ActiveSheet.Cells(lFirstRow, 2).Select Selection.Paste 

通过

 Cells(lFirstRow, 2).Select Activesheet.paste 

你的代码将完美地工作


有关在vba中使用粘贴和粘贴的重要注意事项

然后从任何地方复制任何范围

  1. 粘贴特殊方法( Sheets.Cells/Range.PasteSpecial

    表格(“每日短缺”)激活

    表(“每日短缺”)。细胞(m,1)。 PasteSpecial Paste:= xlPasteValues

一个例子 –

会抛出错误

 Sheets ("June"). Range ("A10").Select ActiveSheet.PasteSpecial Paste: = xlPasteValues 

这将工作完美无瑕

 Sheets ("June"). Range ("A10").PasteSpecial Paste: = xlPasteValues 
  1. 粘贴方法( ActiveSheet.Paste

    表格(“六月”)。 范围(“A10”)。select

    ActiveSheet.Paste