首发于 SUT事务所
【Excel技巧】- VBA代码提示运行时错误 '1004':  应用程序定义或对象定义错误

【Excel技巧】- VBA代码提示运行时错误 '1004': 应用程序定义或对象定义错误

其实今天应该开始着手写 PowerPoint 的相关技巧,但由于技巧较多,还不知道用什么方法给大家展现,所以一直在构思。在构思的过程中看到大大秦川的牛闪闪的日子2群有人在咨询 VBA代码 的问题,所以就抽空帮其解决了一下。 问题如下

我从群文件里下载这位武汉的小伙伴上传的【 源文件和代码.zip 】文件,打开该压缩包,有两个文档一个是xlsx结尾的,另一个是保存为文本的宏代码。

把文件解压到桌面后,我便双击鼠标打开1234.xlsx文件,然后就顺手把txt里的宏代码拷贝到仅有的一个工作表文件里。 具体操作 如下动态图:

看着上面的动态图,一切都是那么的自然,殊不知我已经掉到坑里去了。因为按照正常的编写VBA代码来说,不会出现这个问题。我自从大二自学VBA以来到现在,写了那么多VBA代码,也没有遇到过一次这样的问题。所以这个问题的出现的确让我感到困惑,所以我从头开始梳理代码,按F8一条一条的调试,调试方法如下:

当执行到语句 Range("B1").Select 的时候,错误窗就弹出来了。由于写了那么多VBA代码,所以从这个错误就大概知道是因为没有写完整选中哪一个工作表的B2单元格,所以程序才会报错,为了让程序不报错,我可以进行如下修改:

语句 Range("B1").Select 修改为 Sheets("Sheet1").Range("B1").Selec t,再进行调试的时候,就不会提示错误了。

可能有的小伙伴就奇怪了,为啥我录制宏的时候不会报错呢?其实我们 录制的宏是放在一个模块里面 ,所以操作整个工作簿的工作表都是没问题的,接下来我会录制一个宏进行讲解。

从上面的动态图可以看出,我录制了一个默认命名为【 宏1 】的宏,录制的宏会自动放在一个模块里面。如果我们没有在录制宏的过程中选择单元格,默认只会针对目前选中的工作表。但当选中其他的工作表,我们再运行【 宏1 】,代码也是可以运行的,但所有的操作就是针对选中的工作表,如果希望引用或选择其他单元格里面的内容, 代码必须写完全是操作哪一个工作表的单元格

我先选中Sheet4工作表,然后执行【 宏1 】代码,单元格C2:F9都会被填充为数字1。所以如果我们希望代码能够很好地运行,我们可以把复制的代码放到新建的模块中,再次运行就不会出现上面1004的问题啦。

今天的分享就到这里啦,上海太冷了,写字冻手,进被窝去啦~Written by Steven in 20170119^_^



微信公众号:SaveUTime

SUT学习交流群:615356012

关注公众号,提高效率,节约您的时间!

编辑于 2017-05-11 07:58

文章被以下专栏收录