vba创build一个新工作表并更改名称

我是VBA新用户。 我的目的是复制一个现有的工作表到一个新的。 然后将新的工作表名称更改为适当的名称。 但是,我得到了像VBA错误信息,

vba运行时错误9下标超出范围(在行Set new_ws = Active …)

VBA代码如下: 提前致谢

Sub CreateWS() Dim ws As Worksheet Dim new_ws As Worksheet Set ws = ActiveWorkbook.Worksheets("Bus Voltage") ws.Name = "Bus Voltage_All" ws.Copy Worksheets(Sheets.Count) Set new_ws = ActiveWorkbook.Worksheets("Bus Voltage_All(2)") new_ws.Name = "Bus Voltage" End Sub 

它看起来像你有一个空间的问题。

您的行Set new_ws = ActiveWorkbook.Worksheets("Bus Voltage_All(2)")

应该

Set new_ws = ActiveWorkbook.Worksheets("Bus Voltage_All (2)")

注意_All之后的空格 你在代码中遗漏了这个。

(可能)有帮助的是,当您使用.Copy方法时,您的新工作表会自动激活,因此您可以使用此代码(以避免空间错误):

 ws.Copy Worksheets(Sheets.Count) Set new_ws = ActiveSheet 

而且,关于引用表的主题(尽pipe不直接与您的问题相关),您可以使用称为CodeName的内容来引用表单。

例如:

在这里输入图像说明

CodeNames是Sheet1,Sheet2等

代码:

 Worksheets("Old Data").Activate 

 Sheet1.Activate 

是等同的。

通过这种方式引用工作表的主要好处是,如果您的工作表名称发生更改,您的代码将不会中断。