简单代码在即时窗口中工作,在应用程序中生成1004错误

时间:2018-06-01 03:28:24

标签: excel-vba vba excel

我的应用程序中有以下代码生成1004错误:

range(cells(1, 103), cells(157, 112)).select

但是,如果我将此代码复制到即时窗口并执行它,我可以看到单元格被选中。

如果我使用Range("CY1", "DH157").Select  应用程序运行正常,没有错误。

这到底是怎么回事?

谢谢!

更新: 我在" scratch":

中创建了一个简单的两个工作表文件,其中包含以下代码
Private Sub testcode_Click()

    Sheets("scratch").Activate
    Range(Cells(5, 5), Cells(10, 10)).Select

    Sheets("testtab").Activate
    Sheets("testtab").Range("A1:E5").Select
    Sheets("testtab").Range("B10:C16").Select
    Sheets("testtab").Range(Cells(5, 5), Cells(10, 10)).Select

End Sub

代码将正确执行UNTIL执行最后一个语句。这产生了' 1004'错误,至少在我的系统上

我从2015年发现了一个类似的问题,Rory回答说它现在对我来说正常。显然,单元格调用指的是代码所在的工作表,即使激活了替代工作表。以下工作正常:

表格(" testtab")。范​​围(ActiveSheet.Cells(5,5),_             ActiveSheet.Cells(10,10))。选择

神秘解决了!谢谢罗里! 谢谢大家。

1 个答案:

答案 0 :(得分:1)

这种行为很容易重现 将以下代码放入sheet1的表单模块

Sub Test()
 Range(Cells(1, 103), Cells(157, 112)).Select
End Sub

添加第二张纸,将其激活并从sheet1的纸张模块运行子测试。问题是您尝试在sheet1上选择当时未处于活动状态的范围。