excel - 宏将在开发人员中使用热键但不能使用按钮...知道为什么吗?
问题描述
如上所述,代码在开发人员和热键中都可以正常工作,但是当我使用按钮时,似乎“转到最后一行 + 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
解决方案
您需要使用工作表来限定每个范围、行、列等:
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
或使用行号(as 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
vs FrstEmtCll
(missing p
)。这意味着您现在实际上有 2 个不同的变量(这很容易破坏您的代码)。为避免此类错误,我强烈建议您激活Option Explicit
:在 VBA 编辑器中转到工具›选项›需要变量声明。
推荐阅读
- php - 从 php + $_GET 友好 url + cURL 问题运行 .htaccess
- r - 更新并行 R 线程内的全局变量
- botframework - 开始意外删除 Bot Framework Account
- swift - 嵌套字典上的 Swift Codable 崩溃
- php - Wordpress 在编辑帖子页面保存,更新帖子元
- elasticsearch - Elasticsearch - 查询超过 10k 的数据
- ros - ROS/ Moveit/ Reflexxes -Generating a sequence of Trajectory goals for a 6DOF robot
- ios - visibleCells returns all cells in a collectionView in a tableViewCell
- javascript - Black overlay with see through text/image
- jenkins - Jenkins: withCredentials() can't access user scope credentials so is there any way I can use to access user credentials?