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
相关产品推荐
相关产品推荐

