我有一个工作簿,宏不起作用,基本上只是从单元格A3复制并向下复制每个工作表中的值,然后依次将每个粘贴到新的摘要工作表中。
当我从字面上创建新工作簿并将所有工作表复制并粘贴到新工作簿中时,一切正常。但是如果我呆在旧的工作簿中,则会出现错误
选择工作表类的方法失败
在我创建的其他两本工作簿中,它们并没有与我复制的图纸完全相同...为什么这本特定的工作簿没有失败?
我关闭了所有其他工作簿,以避免ActiveWorkBook出错-也许不是最好的处理方式,但这不应对此产生影响。
Option Explicit
Public Sub SelectItemsEstimate()
Dim ws As Worksheet
Dim LastRow As Long
For Each ws In ActiveWorkbook.Worksheets
If ws.Name <> "Bussiness Unit Key" _
And ws.Name <> "dv" And ws.Name <> "cc" And ws.Name <> "wer" And ws.Name <> "dafd" _
And ws.Name <> "Master Sheet Summary Data" _
And ws.Name <> "Query for Macro" _
And ws.Name <> "Query for Macro 2 with Format" _
And ws.Name <> "Paste all values" _
And ws.Name <> "Summary" Then
Worksheets(ws.Name).Select
Range("A3", Range("A3").SpecialCells(xlCellTypeLastCell)).Select
Selection.Copy
With ActiveWorkbook.Worksheets("Summary")
LastRow = .Cells(.Rows.Count, "A").End(xlUp).Row ' get last row with data in column "A"
' paste
.Range("A" & LastRow + 1).PasteSpecial Paste:=xlPasteValues
End With
End If
Next
End Sub
所以...由于某种原因...如果我使用
Worksheets(ws.Name).Activate代替Worksheets(ws.Name).Select
我的问题解决了。
为什么选择Worksheets(ws.Name)。在其他工作簿中选择工作,但是在此原始工作簿中,我不得不将其更改为Worksheets(ws.Name)。激活它才能正常工作... ????