我最近回到了VBA,并且已经在变量中测试了字符串添加工作表的概念。我已经能够成功添加工作表,我的代码的最后两行只是选择变量的工作表名称,然后选择单元格A +存储在另一个变量中的行号
在Sheet1,A列中,从A1开始,我有一个循环的8个不同名称的列表:
我期待宏在Sheet“Rob”上以单元格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 :(得分: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