You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 01:50:58