【发布时间】:2017-10-17 21:09:46
【问题描述】:
我将很多工作簿复制到 1 个工作簿,但是由于不同工作簿上的所有工作表都具有相同的名称,并且每个工作簿都有 B1 上的文件的名称,所以我想将新工作表命名为“违规(姓名)”
这是我为那部分准备的代码
Dim wc As Worksheet
Dim ws As Worksheet
Dim SheetNewName As String
Dim Parname As String
Dim SheetName As String
Select Case wc.Cells(n, 1)
Case "PK"
SheetName = "Peak"
Case "Sfactor"
SheetName = "SF Supply"
Case Else
SheetName = wc.Cells(n, 1)
End Select
Set ws = ThisWorkbook.Sheets("Sheet1")
Set wc = ActiveWorkbook.Sheets("Violations Summary")
Set Parname = wc.Range("B1")
Set SheetNewName = SheetName & "(" & Parname & ")"
ActiveWorkbook.Sheets(SheetName).Copy After:=ThisWorkbook.Sheets(1)
Set lastsheet = ThisWorkbook.Sheets(ThisWorkbook.Sheets.count).Select
lastsheet.Name = SheetNewName
尝试在新工作簿上更改新工作表的名称时出现错误,错误是
运行时错误“13”:类型不匹配
在这些线上
Set SheetNewName = SheetName & "(" & Parname & ")"
但是如果我把代码修改成这样
Set Parname = wc.Range("B1")
Set SheetNewName = SheetName & "(" & Parname & ")"
ActiveWorkbook.Sheets(SheetName).Copy After:=ThisWorkbook.Sheets(1)
Set lastsheet = ThisWorkbook.Sheets(1).Select
lastsheet.Name = Parname
它复制了工作表,但不更改名称并得到错误
运行时错误“1004”: 应用程序定义或对象定义的错误
【问题讨论】:
-
有问题吗? SheetName 不存在,因此您不能将 SheetNewName 设置为它 &.... 除非它出现在代码中的其他位置?
-
您的意思是使用 wc.Name 中的部分字符串吗?
-
是的 sheetname 存在,idint 为其输入代码 Select Case wc.Cells(n, 1) Case "PK" SheetName = "Peak" Case "Sfactor" SheetName = "SF Supply" Case Else SheetName = wc.Cells(n, 1) 结束选择
-
您是否收到错误消息?此代码看起来类似于以前的帖子,其中涉及使用 Worksheets 集合而不是工作表的解决方案
-
是的代码相同,但现在我在尝试更改新工作簿上新工作表的名称时出现错误,错误是运行时错误'13':类型不匹配跨度>