2015-07-01 51 views
1

與VBA一起工作的體驗非常弱,但現在遇到了真正需要的問題。循環遍歷所有活動的工作表

我需要將單元格的值從多個工作表(除了「摘要」)複製到一個工作表中,但面臨一個問題。當運行一個宏時,我得到了大約30行,包含我需要的值,但是所有30個值都屬於同一個工作表。似乎循環只運行在大約1個工作表中。你能幫我找到代碼中的錯誤嗎?

Sub CopyTotalSalesPrice() 

For Each Worksheet In ActiveWorkbook.Worksheets 
If Worksheet.Name <> "Summary" Then 

Worksheet.Cells(Rows.Count, 7).End(xlUp).Select 
End If 
    If Selection.Value > "0" Then 
     Selection.Copy 
     Worksheets("Summary").Cells(Rows.Count, 6).End(xlUp).Offset(2, 0).PasteSpecial (xlPasteValues) 

     Range("D4").Select 
     Selection.Copy 
     Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp).Offset(2, 0).PasteSpecial (xlPasteValues) 

    End If 

Next Worksheet 

Worksheets("Summary").Select 
End Sub 

回答

0

當使用單元格(Rows.Count,7).End(xlUp).Select和其他所有內容時,它們引用當前表單。所以,你要麼把它們中的Worksheet.Cells(Rows.Count,7).END(xlUp)。選擇前面或你Worksheet.Activate

首先激活片,或者你可以做如下:

Sub CopyTotalSalesPrice() 
    For Each Worksheet In ActiveWorkbook.Worksheets 
     With Worksheet 
      If .Name <> "Summary" Then 
       .Cells(Rows.Count, 7).End(xlUp).Copy Destination:=Worksheets("Summary").Cells(Rows.Count, 6).End(xlUp).Offset(2, 0) 
       .Range("D4").Copy Destination:=Worksheets("Summary").Cells(Rows.Count, 4).End(xlUp).Offset(2, 0) 
      End If 
     End With 
    Next Worksheet 
    Worksheets("Summary").Select 
End Sub 
+0

非常感謝您!試過WorkSheet.Cells,但它給出了一個錯誤「選擇方法或範圍類失敗」,但激活工作表正是我所需要的! :) 祝你有美好的一天! –

+0

請標記爲正確答案。無論如何它是工作表不是工作表.... – Gotrekk

0

試試這個:

Sub CopyTotalSalesPrice() 

For Each Worksheet In ActiveWorkbook.Worksheets 
    If Worksheet.Name <> "Summary" Then 
     Worksheet.Select 
     Worksheet.Cells(Worksheet.Rows.Count, 7).End(xlUp).Select 
    End If 
    If Selection.Value > "0" Then 
     Selection.Copy 
     Worksheets("Summary").Cells(Worksheet.Rows.Count, 6).End(xlUp).Offset(2, 0).PasteSpecial (xlPasteValues) 

     Range("D4").Select 
     Selection.Copy 
     Worksheets("Summary").Cells(Worksheet.Rows.Count, 4).End(xlUp).Offset(2, 0).PasteSpecial (xlPasteValues) 

    End If 

Next Worksheet 

Worksheets("Summary").Select 
End Sub 

我換成這個Cells(Rows.Count, 7).End(xlUp).SelectWorksheet.Cells(Worksheet.Rows.Count, 7).End(xlUp).Select

+0

謝謝你的迴應。正如Gotrekk在上面提出的那樣,我決定簡單地複製你的代碼,但我仍然得到「Select Method或Range Class Failed」。你知道爲什麼會出現這個問題嗎?既然你們都提出了這個選擇,那肯定是在我身邊出了問題?! –

+0

用新代碼編輯您的問題...我們將看看 – Gotrekk

+0

將其更改爲Worksheet.Cells解決方案。 –