【问题标题】:Issue with For Loop to paste special a row across worksheetsFor Loop 问题在工作表中粘贴特殊的一行
【发布时间】:2014-11-25 16:31:37
【问题描述】:

我正在尝试复制最后一行并将特殊粘贴到下一行。当我为单个工作表尝试以下代码时,它工作正常:

Sub Macro1()

Dim LR  As Long
    LR = Range("E" & Rows.Count).End(xlUp).Row

    Rows(LR).Select
    Selection.Copy
    Rows(LR + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

End Sub

但是当我尝试遍历所有工作表时,它只会在其中一个工作表中粘贴特殊复制的行数,而不是重复到每个工作表。您能否告知我在以下 for 循环中做错了什么?

 Sub Macro1()
 Dim ws As Worksheet
 Dim wb As Workbook
 Dim LR  As Long
 Set wb = ActiveWorkbook

 For Each ws In wb.Worksheets

    If ws3.Name Like "*.plt" Then

    LR = Range("E" & Rows.Count).End(xlUp).Row
    Rows(LR).Select
    Selection.Copy
    Rows(LR + 1).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False

   End If
   Next ws

End Sub

提前致谢!

【问题讨论】:

    标签: vba excel for-loop


    【解决方案1】:

    为了节省一些开销,您应该首先避免使用.Select.Selection.*。如果您仍然只想复制应该通过单元格的.Value 属性复制的值。其次,您应该使用With 语句来确保您正在引用目标表。最后,您应该在最后将未使用的对象设置为Nothing。下面的代码应该可以解决问题。

    代码

    Sub Macro1()
        Dim ws As Worksheet
        Dim wb As Workbook
        Dim rng As Range
        Set wb = ActiveWorkbook
        For Each ws In wb.Worksheets
            With ws
                If .Name Like "*.plt" Then
                    Set rng = .Range("E" & Rows.Count).End(xlUp).EntireRow
                    rng.Offset(1).Value = rng.Value
                End If
            End With
        Next ws
        Set ws = Nothing
        Set rng = Nothing
        Set wb = Nothing
    End Sub
    

    【讨论】:

    • 这太棒了!效果很好,非常感谢您详细解释!
    【解决方案2】:

    我觉得这个

    If ws3.Name Like "*.plt" Then
    

    可能是你的问题。您需要启用 Option Explicit 以便您不使用未定义的名称。

    另外,制作

    Set wb = ActiveWorkbook
    

    Set wb = ThisWorkbook
    

    【讨论】:

    • 感谢您的回复。我已经尝试过了,但仍然有些问题,但“THOTHAL”的另一个答案效果很好,我也学到了一种新方法。但真的很感谢你试图帮助我:)
    猜你喜欢
    • 2022-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    相关资源
    最近更新 更多