Excel宏在调试模式下执行,但在选择不同的工作表时会引发错误

时间:2012-11-21 22:38:47

标签: excel-vba excel-2010 vba excel

我正在编写一个宏来将数据从输入表单传输到存储表 我有粗略的代码,它运行。仅当我选择了目的地表时。如果我尝试从包含表单的工作表运行它会抛出以下错误:
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窗口还是从宏选择窗格执行,都会发生此错误。

1 个答案:

答案 0 :(得分:1)

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

添加

Range("ETBMARKER").Parent.Activate
在投掷错误的行之前

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