繁体   English   中英

循环浏览所有活动的工作表

[英]Looping through all active Worksheets

我使用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

当使用Cells(Rows.Count,7).End(xlUp).Select以及其他所有内容时,它们均引用当前工作表。 因此,您要么将它们放在Worksheet.Cells(Rows.Count,7).End(xlUp).Select前面,要么先使用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

尝试这个:

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

我用Worksheet.Cells(Worksheet.Rows.Count, 7).End(xlUp).Select替换了此Cells(Rows.Count, 7).End(xlUp).Select Worksheet.Cells(Worksheet.Rows.Count, 7).End(xlUp).Select

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM