使用VBA复制Excel工作表并指定名称时出错,求解决方法
解决VBA复制工作表并命名的错误问题
原代码的问题分析
- 语法逻辑错误:
Sheets("Joint Name").Copy After:=Sheets("Frontsheet").Name = shnm这行试图同时完成复制和命名操作,语法完全错误——After参数需要传入工作表对象,而非赋值语句。 - 对象赋值错误:
nws = jws.Copy(...)中nws是Worksheet对象类型,对象变量的赋值必须使用Set关键字,直接赋值会触发Expected function or variable错误。
正确实现代码
Sub GetJoins() Dim tws As Worksheet, jws As Worksheet, nws As Worksheet Dim shnm As String Set tws = ThisWorkbook.Sheets("Frontsheet") Set jws = ThisWorkbook.Sheets("Joint Name") shnm = tws.Range("B4").Value ' 复制工作表到Frontsheet之后,将新表对象赋值给nws Set nws = jws.Copy(After:=tws) ' 给新工作表设置指定名称 nws.Name = shnm End Sub
关键说明
- 使用
Set nws = jws.Copy(After:=tws):Copy方法在指定位置复制工作表后,会返回新创建的工作表对象,通过Set关键字将其绑定到nws变量。 - 单独执行
nws.Name = shnm:复制完成后再给新工作表设置名称,避免语法冲突。 - 注意
shnm的值需为合法工作表名称:不能包含斜杠、问号、冒号等非法字符,否则会触发命名错误。
内容的提问来源于stack exchange,提问作者Geographos
相关产品推荐
相关产品推荐

