You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Excel 2016中VBA无法将工作表赋值给变量的问题求助

解决VBA运行时错误'91':对象变量或With块变量未设置

嘿,作为资深的C/C++/Java/C#开发者,刚上手VBA踩这个坑真的太常见了!我来给你把这个问题讲明白~

问题根源

你遇到的运行时错误'91',核心原因是VBA中对象类型变量的赋值规则和你熟悉的编程语言不一样:
在C/C++/Java/C#里,对象引用直接用=赋值就行,但VBA里,像Worksheet这种对象类型的变量,必须用Set关键字来完成引用绑定。你第20行的ws = Worksheets(1)没有加Set,VBA会把它当成普通变量赋值,导致ws并没有被正确关联到工作表对象,自然就报错了。

修正后的代码

只需要给第20行加上Set关键字就行,另外其实Activate操作是多余的(VBA可以直接通过对象变量操作工作表,不用激活),优化后的代码如下:

Sub AddDataToSheet1()
10 Dim ws As Worksheet
20 Set ws = Worksheets(1)
' 30 ws.Activate  ' 这行可以移除,直接操作对象更高效
40 ws.Range("A1").Value = "Apple Pie"
End Sub

额外小建议

作为VBA新手,建议在模块顶部加上Option Explicit,它会强制你声明所有变量,能帮你避免很多类似的低级错误,比如变量名拼写错误、类型不匹配等。

内容的提问来源于stack exchange,提问作者JKna

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:21:26