其实我只是想帮忙提供一些Excel VBA的类(class),而不是为了代码。
问题:
主线代码很基础,虽然我没有VBA经验,但我理解它
Sheets.Add().Name = Name_of_Sheet
如果我定义一个名称列表,例如 NameList =Array("SheetA", "SheetB", "SheetC","SheetD")
然后执行 for 循环
For I = LBound(NameList) To UBound(NameList)
Sheets.Add().Name = Tabs(I)
Next I
但是,很多时候,工作表的命名是有标准的,用Visual Basic来编辑宏效率并不高。我只想根据单元格的内容创建工作表
我的问题:
1) 所选数据(1D 列、1D 行或多行 x 多列)的索引如何工作?
2) 我如何访问这些单元格的内容?
最佳答案
你的问题很开放。这是解决“一维列”方面的开始。有很多方法可以实现此目的,但我提供了一些基本的 VBA 构造,例如 For Each
和 With/End With
。您可以轻松地将变量指向其他工作簿、工作表或单元格。它有一些错误处理来解决尝试使用已经存在的工作表名称的问题:
Sub AddSheets()
Dim cell As Excel.Range
Dim wsWithSheetNames As Excel.Worksheet
Dim wbToAddSheetsTo As Excel.Workbook
Set wsWithSheetNames = ActiveSheet
Set wbToAddSheetsTo = ActiveWorkbook
For Each cell In wsWithSheetNames.Range("A2:A5")
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
End Sub
另一种方法是将单元格内容加载到数组中,如果它实际上是二维的(并且有大量名称),这可能会很有用,但也可能有点过分了。
关于excel - 如何从作为所选单元格内容的名称列表创建多个工作表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10423228/