如何将ActiveCell.Row赋值给变量?宏执行报‘Object not Defined’错误求助
问题解决方法
错误原因分析
Set关键字误用:ActiveCell.Row返回的是整数类型的行号,不是对象,不需要用Set赋值,直接给变量赋值即可。Select Case语法错误:原写法把判断条件写在Case后面是错误逻辑,正确用法是先指定要判断的变量,再在Case后写匹配的值。另外代码里的test_expression是未定义的无效变量,要替换为我们要判断的CurrentRow。
修正后的代码
Sub CopyPaste() Dim CurrentRow As Integer ' 声明变量类型,代码更规范 CurrentRow = ActiveCell.Row ' 直接赋值,去掉多余的Set Select Case CurrentRow Case 2 ' 匹配行号为2的情况 Sheets("Drop-In").Range("A2").EntireRow.Copy Sheets("CompletedV2").Range("A2") Case Else ' 其他行号的情况 MsgBox "This is a sample box" End Select End Sub
额外优化建议
如果想要复制活动单元格所在的行(而非固定的A2行),可以把代码里的Range("A2")改成Range("A" & CurrentRow),实现根据活动行动态复制,代码如下:
Sub CopyPaste() Dim CurrentRow As Integer CurrentRow = ActiveCell.Row Select Case CurrentRow Case 2 Sheets("Drop-In").Range("A" & CurrentRow).EntireRow.Copy Sheets("CompletedV2").Range("A2") Case Else MsgBox "This is a sample box" End Select End Sub
内容的提问来源于stack exchange,提问作者Aaron Sharples
相关产品推荐
相关产品推荐

