VBA复制工作表时触发Copy函数错误,如何实现将工作表复制到指定日期命名的新工作表?
解决VBA中Copy函数复制工作表到指定日期命名工作表的错误
我来帮你拆解下这个错误的原因,你的代码逻辑方向没问题,但语法写法踩了VBA的坑:
错误根源
你写的这行代码存在语法逻辑错误:
Sheets("Sheet3").Copy After:=ActiveWorkbook.Sheets(Worksheets.Count).Name = Dateini
Copy方法的After参数要求传入一个工作表对象,但你在这里写了一个赋值表达式.Name = Dateini——这个表达式的返回值是布尔值(True/False),完全不是Copy需要的工作表对象类型,VBA自然会抛出异常。而且你试图在参数里同时完成“指定复制位置”和“修改工作表名称”两个操作,这不符合VBA的语法规则。
正确的写法
分两步操作:先复制工作表到目标位置,再给新工作表改名,逻辑清晰又符合语法:
Dim Dateini As String Dateini = "2021-03-31" ' 第一步:把Sheet3复制到所有工作表的最后 Sheets("Sheet3").Copy After:=ActiveWorkbook.Sheets(Worksheets.Count) ' 第二步:给刚复制出来的新工作表改名(此时新工作表处于激活状态,直接用ActiveSheet即可) ActiveSheet.Name = Dateini
如果你想更严谨(避免因其他工作表意外激活导致的问题),可以用变量接收新工作表对象:
Dim Dateini As String Dim newSheet As Worksheet Dateini = "2021-03-31" ' 复制并获取新工作表对象 Set newSheet = Sheets("Sheet3").Copy(After:=ActiveWorkbook.Sheets(Worksheets.Count)) ' 给新工作表改名 newSheet.Name = Dateini
这样就能顺利实现你想要的“复制指定工作表到新建的、以指定日期命名的工作表”的需求啦~
内容的提问来源于stack exchange,提问作者Corrie Byrd
相关产品推荐
相关产品推荐

