我是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
答案 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的内容来引用工作表。
例如:
CodeNames是Sheet1,Sheet2等
代码:
Worksheets("Old Data").Activate
和
Sheet1.Activate
是等价的。
以这种方式引用工作表的主要好处是,如果您的工作表名称发生变化,您的代码就不会中断。