如上所述,代码在开发人员和热键上都可以正常工作,但是当我使用按钮时,“转到最后一行+ 1”似乎不起作用。当我选择按钮时,数据将继续被复制并重新复制到第2行。
Sub Entry_Schedule()
' Entry_Schedule Macro
Dim FrstEmptCll As Range
FrstEmtCll = Range("A" & Rows.Count).End(xlUp).Row
Sheets("Sheet2").Range("D4:I4").Copy
Sheets("Data").Range("A" & FrstEmtCll + 1).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
答案 0 :(得分:2)
您需要使用工作表限定每个范围,行,列等:
FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row
第二个问题是您声明了Dim FrstEmptCll As Range
,但是尝试将行号放入范围对象.End(xlUp).Row
中。
因此Set
到单元格的范围和偏移量:
Option Explicit
Sub Entry_Schedule()
' Entry_Schedule Macro
Dim FrstEmtCll As Range
Set FrstEmtCll = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Offset(RowOffset:=1)
Worksheets("Sheet2").Range("D4:I4").Copy
FrstEmtCll.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
或使用行号(如Long
):
Option Explicit
Sub Entry_Schedule()
' Entry_Schedule Macro
Dim FrstEmptRow As Long
FrstEmptRow = Worksheets("Data").Range("A" & Worksheets("Data").Rows.Count).End(xlUp).Row + 1
Worksheets("Sheet2").Range("D4:I4").Copy
Worksheets("Data").Range("A" & FrstEmptRow).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
End Sub
此外,您错误输入了变量名FrstEmptCll
与FrstEmtCll
(缺少p
)。这意味着您现在实际上有2个不同的变量(很容易炸毁您的代码)。为避免此类错误,我强烈建议激活Option Explicit
:在VBA编辑器中,转到工具› 选项› Require Variable Declaration 。