2013-01-21 31 views
0

我最近一直在回到VBA中,并且一直在测试变量中字符串添加工作表的概念。我已经能够成功添加工作表,并且我的代码的最后两行仅仅是选择变量的工作表名称,然后选择单元格A +存储在另一个变量中的行号码当选择带变量的工作表时,Excel 2007 VBA运行时错误

In Sheet1中,列A,在A1开始,我有8个不同的名称列表,循环通过:

  • 鲍勃
  • 杰夫
  • 最大
  • 史蒂夫
  • 罗西
  • 皮帕
  • 佩内洛普
  • 罗布

我期待宏观结束对选定表“抢”与细胞A9,但是我得到一个运行时1004错误

我已经通过加强该代码,它正在选择正确的变量,但当它试图选择行A9,错误出现

我的代码如下:

Sub Add_worksheets() 

Dim sheetName As String 
Dim rownum As Integer 

rownum = 1 
Range("A" & rownum).Select 
sheetName = ActiveCell.Value 

Do Until Range("A" & rownum).Value = "" 
Range("A" & rownum).Select 
sheetName = CStr(ActiveCell.Value) 
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sheetName 
Sheets("sheet1").Select 
rownum = rownum + 1 
Loop 

Sheets(sheetName).Select 
Range("A" & rownum).Select 

End Sub 

任何帮助,将不胜感激

回答

0

我也建议你添加if-else检查工作表名称存在。为什么你要select?我不支持的选择,因为你需要它,你可以试试这个:因为当你增加rownum它去10细胞,这意味着,SHEETNAME不再有名字,但空..

Dim sheetName As String 
Dim rownum As Integer 
Dim WS as WorkSheet 

rownum = 1 
sheetName = Range("A" & rownum).Value '-- remove select 


Do Until Range("A" & rownum).Value = "" 
Range("A" & rownum).Select 
sheetName = CStr(ActiveCell.Value) 
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = sheetName 
Set WS = Sheets(sheetName) 
Sheets("sheet1").Select 
rownum = rownum + 1 
Loop 

rownum = rownum - 1 '-- here 
WS.Activate 
Range("A" & rownum).Value = rownum 

,或者您可能只需使用一个数组做表的创建,然后选择片后....而不是去来回第一页......地名..

Sub addSheets() 
Dim rowNum as Integer 
Dim Ws as WorkSheet 
Dim vArray as Variant 

'-- creates one dimensional array 
vArray = WorkSheetFunction.Transpoe(Sheets(1).Range("A1:A9")) 

For rownum = Lbound(vArray) to Ubound(vArray) 
    If IsEmpty(vArray(rowNum)) Then 
     On Error Resume Next 
     Set Ws = Sheets(vArray(rowNum)) 
     If Err.Number <> 0 Then '--no such sheet, so add it 
     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = vArray(rowNum) 
     Set Ws = Sheets(vArray(rowNum)) 
     End If 
    End IF 
Next rownum 

Ws.Activate 
Ws.Range("A1").offset(rownum).value = rownum 
End Sub 
+0

谢谢您回应 我之所以使用选择功能只是为了突出显示活动单元格,所以我知道它已按预期存储了所有参数。我已经复制了你的代码并且没有错误,但是它取代了我的列表的最后一个值 正如我上面提到的,这只是为了测试它的概念,因为我将它实现为一个更大的'项目'我正在承担。我将需要选择变量中的图纸集并在图纸上执行功能。我可以简单地将它们编入索引,但对于长期目标而言,变量的需求至关重要 – mattnhugh

+0

因此,除了替换之外,一切都很合适?我能假设你知道如何去除最后一个单元格的替换吗?你的代码是否改变了工作?顺便说一句,只要您设置工作表并将其作为参数提供给函数,就可以运行任何函数,而不一定需要选择工作表。 – bonCodigo

+0

对迟到的反应抱歉。我已经能够通过结合你的和我的想法来开展工作。欣赏帮助 – mattnhugh