【问题标题】:Excel macro executes in debug mode but throws an error when different sheet is selectedExcel 宏在调试模式下执行,但在选择不同的工作表时会引发错误
【发布时间】:2012-11-22 12:32:54
【问题描述】:

我正在编写一个宏来将数据从输入表单传输到存储表。
我已经制定了粗略的代码,并且可以运行。仅当我选择了目标工作表时。如果我尝试从包含表单的工作表中运行它,则会引发以下错误:
Run-time error '1004': Select method of Range class failed
但是,如果我从目标表运行宏,它会完美执行。 代码如下:

Sub ExpFormCharge()
    Dim pasteCell As Range
    Range("expenseTbl").ListObject.ListRows.Add AlwaysInsert:=False
    Range("ETBMARKER").Offset(-1, 0).Select
    Range("ExpFormBackend").Copy
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
End Sub

后端表由另一个宏填充,然后将该表复制并粘贴到费用表(存储表)的新行中。调试选项突出显示的行是这一行:
Range("ETBMARKER").Offset(-1, 0).Select
那是指一个标记,将存储表的总行偏移一,以便选择表的最底行。 无论是从 vba 窗口还是从宏选择窗格执行代码,只要选择了目标工作表以外的工作表,就会发生此错误。

【问题讨论】:

    标签: excel excel-2010 vba


    【解决方案1】:

    某些操作只能在活动工作表上执行。

    添加

    Range("ETBMARKER").Parent.Activate
    

    在抛出错误的行之前。

    顺便说一句,但是你 Dim 一个你从不使用的变量,导致错误的行没有做任何事情——你在下一行复制了一个不同的范围。您可以删除这两行,除非此代码示例中未包含其他功能。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-05-19
      • 2022-01-20
      • 1970-01-01
      • 2018-07-31
      相关资源
      最近更新 更多