检查我的工作簿中的最后一张工作表的名称,如果它有一个特定的名称然后破坏macros

我想有一个error handling的代码,检查最后一个工作表的名称,如果工作表有一个特定的名字,那么它应该打破我的代码的其余部分。

Set ws = ThisWorkbook.Sheets(Sheets.Count) MsgBox ws.Index '& "-" & ws.Name & "-" & ws.CodeName 

在这里它将最后从另一个工作簿复制到ThisWorkbook中。 我目前的最后一页被称为“传奇”。

 Sheets(Sheet1).COPY After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) 

这里我想说的是,如果最后一张纸是“图例”,则意味着纸张是错误的,并且纸张没有被复制,因此破坏了代码。

 If ws.Name Like "*Legend*" Then Exit Sub 

但是,无论如何,无论如何都会破坏代码,无论工作表的复制粘贴是否成功,都无法正常工作。 有什么build议么??

非常感谢!

您最有可能在复制额外的表单之前设置ws ,因此添加的表单数量无关紧要, ws将始终为Legend

试试:

 Set ws = ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) If ws.Name Like "*Legend*" Then Exit Sub 

这将重新计算包括任何您已复制的工作表的数量。

或者如果你需要ws Legend供以后使用:

 If ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count).Name Like "*Legend*" Then Exit Sub 

这是你的代码,据我所知:

 Set ws = ThisWorkbook.Sheets(Sheets.Count) MsgBox ws.Index '& "-" & ws.Name & "-" & ws.CodeName Sheets(Sheet1).COPY After:=ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count) If ws.Name Like "*Legend*" Then Exit Sub 

显然,在你问你是否应该复制工作簿之前,你需要从另一个工作簿复制工作表。 因此,复制过程不能通过检查最后一张纸的名称来停止。 该副本已经完成。 如果您想停止复制,请提出问题。

但是,如果新添加的表格最后一张被添加的表单被命名为“图例”,则上述代码将不会对新复制的表单执行任何操作。 新表的名字没有被检查。