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

时间:2015-04-20 21:12:50

标签: excel vba excel-vba

我是VBA新用户。我的目的是将现有工作表复制到新工作表。然后将新工作表名称更改为正确的名称。但是,我收到了类似的VBA错误消息,

vba运行时错误9下标超出范围(行设置new_ws =活动 ...)

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

1 个答案:

答案 0 :(得分:3)

在我看来,你有一个空间问题。

您的第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

而且,关于引用工作表的主题(虽然与您的问题没有直接关系),您可以使用名为CodeName的内容来引用工作表。

例如:

enter image description here

CodeNames是Sheet1,Sheet2等

代码:

Worksheets("Old Data").Activate

Sheet1.Activate

是等价的。

以这种方式引用工作表的主要好处是,如果您的工作表名称发生变化,您的代码就不会中断。