2015-11-04 90 views
0

的阵列,我有以下工作表的数组:创建电子表格

Dim ArrayOne(11) As Worksheet 
ArrayOne(0) = "January 2015" 
ArrayOne(1) = "February 2015" 
ArrayOne(2) = "March 2015" 
ArrayOne(3) = "April 2015" 
ArrayOne(4) = "May 2015" 
ArrayOne(5) = "June 2015" 
ArrayOne(6) = "July 2015" 
ArrayOne(7) = "August 2015" 
ArrayOne(8) = "September 2015" 
ArrayOne(9) = "October 2015" 
ArrayOne(10) = "November 2015" 
ArrayOne(11) = "December 2015" 

,当我试图做到以下几点:

Set ArrayOne(1) = Sheets.Add 
Sheets.Add.Name = ArrayOne(1) 
ArrayOne(1).Protect DrawingObjects:=False, Contents:=False, _ 

它给了我一个错误:

Object variable or With block variable not set

而这里的错误点:

ArrayTwo(0) = "January 2015" 

回答

0

您正在尝试将String值分配给Worksheet数据类型。您可以为工作表名称声明String变量,为实际工作表声明Worksheet变量。可能是这样的:

Dim strArrayOne(11) As String 
Dim wsArrayOne(11) As Worksheet 

strArrayOne(0) = "January 2015" 
strArrayOne(1) = "February 2015" 
strArrayOne(2) = "March 2015" 
strArrayOne(3) = "April 2015" 

Set wsArrayOne(1) = Sheets.Add 
Sheets.Add.Name = strArrayOne(1) 
+0

谢谢!那完美的工作! – Jack

+0

只是一个简单的问题,我是否甚至需要这个 - > strArrayone(1).Protect DrawingObjects:= False,内容:=假,_ – Jack

+0

如果你只是添加一个不受保护的工作表并命名它,那么我没有看到任何该行代码的原因。你究竟想要做什么? – BrandonCoder

0

您已声明ArrayOne类型Worksheet,但您正在使用字符串填充它。

应该是这样的:

Dim ArrayOne(11) As Worksheet 
Set ArrayOne(0) = Worksheets("January 2015") 
Set ArrayOne(1) = Worksheets("February 2015") 
'...etc 

你没有表现,其中ArrayTwo从何而来。

相关问题