运行“粘贴”时出现VBA运行时错误438

时间:2014-03-05 09:34:31

标签: excel vba excel-vba paste

我刚刚熟悉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

在“Selection.Paste”行出现时出现“运行时错误438.对象不支持此属性或方法”。有什么问题?:( 我试过使用paste special,激活工作表和选择单元格(不是范围),使用Cstr,但没有改变

2 个答案:

答案 0 :(得分:8)

尝试Selection.PasteSpecial xlPasteAll

Paste本身可以处理多个对象,最明显的是Worksheet,而不是Range对象上的Selection

要粘贴到Range,您必须使用PasteSpecial方法及其可用的参数,例如xlPasteAll; xlPasteValues; xlPasteFormulas; xlPasteFormats以及其他您可以在光标位于VBE中的F1内时按PasteSpecial看到的内容。

答案 1 :(得分:0)

在代码中替换这两行

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

通过

Cells(lFirstRow, 2).Select
Activesheet.paste

您的代码将完美运行

在vba中使用paste和pastetespecial的重要说明

从任何地方复制任何范围

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

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

    表格(“每日短缺”)。单元格(m,1)。 PasteSpecial Paste:= xlPasteValues

  2. 一个例子 -

    将抛出错误

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

    这将完美无缺地

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

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

      ActiveSheet.Paste