2017-06-05 110 views
1

我是Excel VBA中的新成員。我想根據單元格值插入單元格的數量。Excel VBA:根據單元值插入N張表格

我有sheet1,我想使用b4作爲插入張數(這是一個模板)的參考。

例如,如果b4 = 4的值,我想複製模板4次。

我該怎麼做vba?

謝謝。 :)

回答

1

沒有魔法,在一個循環中逐個創建它們,將每個新的一個放在最後。編輯:您還想重新命名他們1,2,3,4,..所以:

Sub CreateSheets() 
    Dim i As Long 
    With ThisWorkbook.Sheets 
     For i = 1 To Sheet1.Range("B4").Value2 
     .Item("Template").Copy After:=.Item(.Count) 
     .Item(.Count).Name = i 
     Next 
    End With 
End Sub 
+0

如果我想將每個副本重命名爲1,2,3 ...,那麼怎麼辦?我怎麼做?謝謝。 :) –

+0

@LiezlMaigue沒關係,爲此添加了一行。 –

+0

謝謝。如果我想使用i作爲工作表的原點值,該怎麼辦?並將其用於另一系列代碼。我的代碼是什麼? –

1

像這樣的東西應該工作:

Sub copySheets() 

Dim i As integer 

Dim n As integer 'the amount of sheets 

n = Cells(4, 2).Value 'b4 

For i = 2 To n 
    If ActiveWorkbooks.Worksheets.Count < n Then 'Makes sure the sheets exists 
     Dim ws As Worksheet 
     Set ws = ThisWorkbook.Sheets.Add(After:= _ 
      ThisWorkbook.Sheets(ThisWorkbook.Sheets.Count)) 
    End If 
    ws1.Copy ThisWorkbook.Sheets(Sheets.Count) 'copy data 

Next i 

End Sub 
+0

非常感謝你。 –

+0

夥計們,另外,我想用我作爲工作表的原點值。並將其用於另一系列代碼。但是我得到一個編譯:不匹配錯誤。我錯過了什麼? –

1

或者這樣的事情...

Sub CopyTemplate() 
Dim ws As Worksheet, wsTemplate As Worksheet 
Dim n As Integer, i As Long 
Application.ScreenUpdating = False 
Set ws = Sheets("Sheet1") 
Set wsTemplate = Sheets("Template")  'Where Template is the name of Template Sheet, change it as required. 
n = ws.Range("B4").Value 
If n > 0 Then 
    For i = 1 To n 
     wsTemplate.Copy after:=Sheets(Sheets.Count) 
     ActiveSheet.Name = i 
    Next i 
End If 
Application.ScreenUpdating = True 
End Sub 
+0

完美運作。 :) 非常感謝。 –

+0

@LiezlMaigue不客氣。很高興按照期望工作。 :) – sktneer

+0

此外,我想使用我作爲工作表的來源的價值。並將其用於另一系列代碼。但是我得到一個編譯:不匹配錯誤。我錯過了什麼? –

相關問題