2017-02-01 89 views
0

下面的VBA應該查看「設置」選項卡上的列表併爲每個JobName創建一個新選項卡。執行時出現「超出範圍」錯誤。使用Excel VBA添加新選項卡

Sub JobTabs() 

Application.ScreenUpdating = False 
Worksheets("Setup").Select 
For i = 7 To 100 
    JobName = Sheets("Setup").Cells("D" & i).Value 
    If JobName = "" Then 
     i = 100 
    Else 
     Sheets("Job A").Copy 
     ActiveSheet.Name = JobName 
    End If 
Next i 

End Sub 

回答

-1

我猜你試圖訪問一個不存在的表。因爲我沒有看到任何Sheets.Add

Dim ws As Worksheet 
Set ws = ThisWorkbook.Sheets.Add(After:= _ 
     ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) 
ws.Name = JobName 

末次

1

故將其複製到新的工作簿我假設你.copy不設置目的地。此時新工作簿被選中並且循環中的表格(「設置」)引用超出上下文(新工作簿沒有名爲「setup」的工作表)

要麼複製位置的範圍,要麼重新選擇工作簿

指定複製目標:

Sub JobTabs() 
Application.ScreenUpdating = False 
Worksheets("Setup").Select 
For i = 7 To 100 
    JobName = Sheets("Setup").Cells("D" & i).Value 
    If JobName = "" Then 
     i = 100 
    Else 
     Sheets("Job A").Copy after:=Sheets("Job A") 
     ActiveSheet.Name = JobName 
    End If 
Next i 
End Sub 

重新選擇工作簿

Sub JobTabs() 
Application.ScreenUpdating = False 
Worksheets("Setup").Select 
For i = 7 To 100 
    ThisWorkbook.Activate 
    JobName = Sheets("Setup").Cells("D" & i).Value 
    If JobName = "" Then 
     i = 100 
    Else 
     Sheets("Job A").Copy 
     ActiveSheet.Name = JobName 
    End If 
Next i 
End Sub 
2

沒有必要使用Select,只是參考ence Worksheets("Setup")直接使用With聲明。

嘗試下面的代碼:

Sub JobTabs() 

    Dim i   As Long 
    Dim JobName  As Variant 

    Application.ScreenUpdating = False 

    With Worksheets("Setup") 
     For i = 7 To 100 
      JobName = .Range("D" & i).Value 
      If JobName <> "" Then 
       ' copy the worksheet at the end 
       Sheets("Job A").Copy After:=Sheets(ThisWorkbook.Sheets.Count)      
       ActiveSheet.Name = JobName 
      Else 
       Exit For 
      End If 
     Next i 

    End With 

    Application.ScreenUpdating = True 
End Sub 
+0

此運行,但沒有任何反應。單元格D7中有3個新選項卡名稱的列表:安裝工作表上的D9。 – user7459948

+0

@ user7459948現在嘗試,我修改了代碼以在列D上的行上循環。複製編輯的代碼並嘗試 –

+0

@ user7459948您是否測試了上述代碼?它按照你的意圖工作嗎? –

相關問題