0

我有一个 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 的新手。有什么更好的方法来做到这一点?

4

2 回答 2

1

这一行:

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

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

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

于 2013-10-31T15:46:01.820 回答
0

你快到了。请注意脚本中的以下行,并在最后去掉 .End(xldown) 。

---对于 wsWithSheetNames.Range("sheet_name").End(xlDown) 中的每个单元格-----

改成

---对于 wsWithSheetNames.Range("sheet_name") 中的每个单元格-----

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

于 2013-10-31T15:56:37.290 回答