Excel2007 运行时错误'91' 对象变量或 With 块变量没有设置 的一种解决办法

运行时错误'91'

对象变量或 With 块变量没有设置

 

今天用了一段VBA小程序,在同事机器上能用,在我机器上用就是不行,具体是这段代码报错:

Set Sheet1 = ThisWorkbook.Worksheets(1)

调试时添加监视发现,ThisWorkbook对象是有效的,可以输出文档名称,但其子对象Worksheets、sheets等东东全部是nothing

 

网上也找不到有效解决办法,什么注册控件,安装office补丁包都试了,也没解决,就差重装office。

 

仔细观察,发现问题有这3个特点:

1.同事机器上的Excel2007上能用,我机器上Excel2007就不能用

2.VBA程序是用Excel2003写的,我用的Excel2007打开执行

3.将Excel2003文件另存为2007的xlsx文件时,总提示文件中宏无法保存,要求选用支持宏的文件类型。选择支持宏的2007 xlsm格式,还是不行

 

最先老怀疑的是2007安装有问题,因为之前装过2003,然后又卸载再装2007,可能有些东西没卸载干净,导致2003跟2007冲突。当然这种怀疑只能靠重装2007来验证。

不甘心重装,又仔细查看过之前查看过的Excel2007安全中心设置,这次勾选了这个选项:

Excel选项 --- 信任中心设置 --- 加载项, 勾选“要求受信任的发布者签署应用程序加载项”

 

勾选这项后,原来不能运行的VBA程序能正常运行了。

 

虽然不知道微软做了什么鸟设置,但问题总算是解决了。Excel2007 用得很不爽,被迫适应后,又这样那样的问题。

 

把解决方法记下来,搜到的TX可以参考下。

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
这个错误通常是因为程序中引用了一个被初始化的对象变量。请检查程序代码,确保使用对象变量之前已经将其初始化。 以下是一些可能导致这个错误的常见原因: 1. 正确设置对象变量 如果您使用了对象变量,例如 `Range` 或 `Worksheet`,请确保在使用前已经为其分配了一个对象。例如,下面的代码会导致一个类型为“对象变量或 With 变量设置”的运行时错误: ``` Dim ws As Worksheet ws.Cells(1, 1) = "Hello" ``` 在上述代码中,我们声明了一个名为 `ws` 的工作表对象变量,但没有为其分配一个工作表对象。因此,在尝试使用 `ws` 对象的 `Cells` 属性时,会触发运行时错误。要解决这个问题,我们应该先为 `ws` 分配一个工作表对象,例如: ``` Dim ws As Worksheet Set ws = ThisWorkbook.Worksheets("Sheet1") ws.Cells(1, 1) = "Hello" ``` 在上述代码中,我们使用 `Set` 关键字为 `ws` 分配了一个工作表对象,这样就可以安全地使用 `ws` 对象的 `Cells` 属性了。 2. 正确初始化变量 如果您使用了一个变量,但在使用前没有对其进行初始化,则会触发“对象变量或 With 变量设置”的运行时错误。例如,下面的代码会引发这个错误: ``` Dim myVar As String myVar = myVar & "Hello" ``` 在上述代码中,我们声明了一个名为 `myVar` 的字符串变量,但没有为其赋值。因此,在尝试将字符串“Hello”添加到 `myVar` 变量时,会触发运行时错误。要解决这个问题,我们应该在使用 `myVar` 变量之前为其赋值,例如: ``` Dim myVar As String myVar = "" myVar = myVar & "Hello" ``` 在上述代码中,我们将空字符串赋值给了 `myVar` 变量,这样就可以安全地将字符串“Hello”添加到 `myVar` 变量中了。 请检查您的程序代码,确保所有的对象变量变量在使用前都已经被正确初始化。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值