我刚刚熟悉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,但没有改变
答案 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的重要说明
从任何地方复制任何范围
粘贴特殊方法(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
粘贴方法(ActiveSheet.Paste
)
表格(“六月”)。范围(“A10”)。选择
ActiveSheet.Paste