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

Excel VBA中如何用变量名引用新建工作表(解决类型不匹配错误)

解决VBA中类型不匹配错误,并用变量直接引用新工作表

你的问题出在没有将新建的工作表对象赋值给wsNew变量,导致后续调用Worksheets(wsNew)时传入了一个空对象,而Worksheets()集合只接受字符串(工作表名称)或数字(索引)作为参数,这就触发了Run-time error 13。

当然可以直接用变量名引用新工作表——这其实是VBA操作对象的最佳实践之一,完全不用纠结工作表的默认名称!修正后的代码如下:

Dim var As String
Dim wsNew As Worksheet
' 关键:用Set把新建的工作表对象赋值给wsNew
Set wsNew = Sheets.Add(After:=ActiveSheet)
var = Range("A34").Value
' 直接通过wsNew变量操作新工作表,无需依赖名称
wsNew.Cells(1, 2) = var

几个关键点说明:

  • 对象类型的变量(比如Worksheet)赋值必须用Set关键字,这是VBA的硬性规则(普通数据类型如String不需要)。
  • 赋值后,wsNew就直接指向了那个新建的工作表,不管它的默认名称是SheetX还是其他,你都可以通过wsNew直接操作它,完全不用修改工作表名称。
  • 额外提醒:你的Range("A34")没有指定所属工作表,默认会使用当前活动工作表。如果这不是你预期的来源,建议加上明确的引用,比如ActiveSheet.Range("A34")或者某个特定工作表的名称,避免逻辑错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.21 06:32:00