.End(xlUp).select-选择下一行而不是行

时间:2019-07-05 12:27:49

标签: excel vba

我正在尝试编写代码以查找工作簿中的下一个空闲行,以将4个数据单元格从一个工作簿复制到另一个工作簿。

当我第一次运行它时,我使用的代码运行良好(工作簿中没有任何内容)。它选择A2并粘贴到4个数据单元中。但是,当我尝试再次运行相同的宏时,它选择的是B2,而不是A3?

我以前多次使用过此功能,但之前从未见过这样的功能。我的代码在下面。

'
' Macro6 Macro
'


Dim fRow As Long

With ActiveSheet

fRow = .Cells(.Rows.Count, 1).End(xlUp).Row  

.Cells(fRow).Offset(1, 0).Select

Selection.PasteSpecial Paste:=xlPasteValues

End With

End Sub

1 个答案:

答案 0 :(得分:2)

问题在于Cells需要一行列,例如.Cells(fRow, "A")

Option Explicit

Public Sub PasteRows()
    With ActiveSheet
        Dim fRow As Long
        fRow = .Cells(.Rows.Count, 1).End(xlUp).Row  

        .Cells(fRow, "A").Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End With
End Sub

也不要使用.Select,这是一个不好的做法:您可能会从阅读中受益 How to avoid using Select in Excel VBA


或者使用以下更短的内容:

Option Explicit

Public Sub PasteRows()
    With ActiveSheet
        .Cells(.Rows.Count, 1).End(xlUp).Offset(1, 0).PasteSpecial Paste:=xlPasteValues
    End With
End Sub