如何从vb中的动态值列表创建工作表

时间:2013-10-31 15:32:54

标签: excel vba excel-vba

我有一个excel名称范围内的值列表。我想编写一个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(单列中的单元格)是要转储要创建的工作表名称的名称范围。 床单的数量可能会改变。

我上面的代码无法正常工作,它只是创建了一个工作表,其中工作表名称为此范围内的最后一个值。我哪里出错了?我是VB新手。这可能是一个更好的方法吗?

2 个答案:

答案 0 :(得分:1)

这一行:

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

摆脱.End(xlDown),这只是抓住最后一个值,如你所说。

在命名范围时,仅使用名称已经定义了整个范围。

答案 1 :(得分:0)

你快到了。注意脚本中的下面一行,最后去掉.End(xldown)。

---对于wsWithSheetNames.Range(“sheet_name”)中的每个单元格。结束(xlDown)-----

更改为

---对于每个单元格在wsWithSheetNames.Range(“sheet_name”)-----

然后它会一个接一个地添加单个工作表名称。