我有一个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新手。这可能是一个更好的方法吗?
答案 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”)-----
然后它会一个接一个地添加单个工作表名称。