2013-10-31 44 views
0

我有一個excel名稱範圍中的值列表。我想編寫一個VB代碼,以便使用這些值列表創建工作表。這些值列表保留在改變。如何在vb中創建動態列表中的工作表

下面是代碼:

Sub AddSheets() 
Dim cell As Excel.Range 
Dim wsWithSheetNames As Excel.Worksheet 
Dim wbToAddSheetsTo As Excel.Workbook 
Dim i As Integer 
i = 0 
Set wsWithSheetNames = ActiveSheet 
Set wbToAddSheetsTo = ActiveWorkbook 
For Each cell In wsWithSheetNames.Range("sheet_name").End(xlDown) 
    With wbToAddSheetsTo 
     .Sheets.Add after:=.Sheets(.Sheets.Count) 
     On Error Resume Next 
     ActiveSheet.Name = cell.Value 
     If Err.Number = 1004 Then 
      Debug.Print cell.Value & " already used as a sheet name" 
     End If 
     On Error GoTo 0 
    End With 
Next cell 

這裏sheet_name(細胞在單個列)是在哪裏創建的片材的名稱被傾倒的namerange。 工作表的號碼可能會改變。

我上面的代碼無法正常工作,它只是創建了一個工作表,名稱爲該範圍內的最後一個值。在哪裏出錯了?我是VB新手,可能有更好的方法來做到這一點?

回答

1

這條線:

For Each cell In wsWithSheetNames.Range("sheet_name").End(xlDown)

擺脫.End(xlDown)的,這只是抓住了最後的值,如你所說。

在命名範圍時,只使用名稱已經定義了整個範圍。

0

你幾乎在那裏。注意腳本中的下面一行,並在最後刪除.End(xldown)。

---對每個小區在wsWithSheetNames.Range( 「SHEET_NAME」)。完(xlDown)-----

變化到

---對每個小區在wsWithSheetNames.Range( 「sheet_name」)-----

然後它會逐個添加單個工作表名稱。