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

如何在VBA中使用字符串变量引用用户命名的工作表?

用字符串变量引用VBA工作表的解决方案

核心问题分析

  1. 错误91的根源:Sheet_title是Worksheet对象类型,直接把字符串Title赋值给它会报错——对象类型变量必须用Set关键字完成赋值。
  2. Sheets(Title)调用失败:大概率是Title的值和实际工作表名称不匹配(比如包含空格、大小写差异,或者目标工作表不存在),另外代码里混用Title和title(VBA不区分大小写,但尽量保持一致更规范)。
  3. 冗余的Select操作:VBA里应尽量避免Select/ActiveCell这类操作,直接通过工作表+单元格的方式引用,既高效又能减少意外错误。

修正后的代码

Dim Title As String
Dim Sheet_title As Worksheet

' 直接读取Config工作表C25的值,无需激活/选择
Title = Sheets("Config").Range("C25").Value
Debug.Print Title

' 用Set关键字给Worksheet对象赋值,同时捕获可能的错误
On Error Resume Next
Set Sheet_title = ThisWorkbook.Sheets(Title)
On Error GoTo 0

' 判断目标工作表是否存在
If Not Sheet_title Is Nothing Then
    ' 直接完成数据赋值,无需切换工作表
    Sheets("Results").Range("B7") = Sheet_title.Range("E8").Value
Else
    MsgBox "名为""" & Title & """的工作表不存在!"
End If

关键改进点

  • 移除所有Select操作,直接通过工作表名称定位单元格,避免激活状态变化带来的逻辑错误。
  • 用Set关键字正确完成Worksheet对象的赋值。
  • 添加工作表存在性判断,提前拦截因名称错误导致的运行时异常。
  • 使用ThisWorkbook.Sheets明确指定当前工作簿,防止误引用其他打开的工作簿。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:10:27