excel - 如何从作为所选单元格内容的名称列表创建多个工作表

标签 excel vba

其实我只是想帮忙提供一些Excel VBA的类(class),而不是为了代码。

问题:

enter image description here

主线代码很基础,虽然我没有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 EachWith/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/

相关文章:

excel - VBA 错误函数 InstrRev = Instr

vba - 如何在 Excel VBA 用户窗体中创建两列查找组合框

excel - VBA 使用字符串参数评估函数

excel - 基于单元格嵌入OLE对象

python - 有没有办法在 Excel-VBA 中调用 Python 代码?

VBA完整公式到单元格

java - Apache POI 数据透视表 : Distinct count (Excel 2013)

mysql - 基于列合并两个表(部分匹配或逗号分隔列)?

vba - VBA 数组过滤器函数出现问题 : only first result is returned

java - 如何使用 selenium webdriver 将 3 个不同变量中的 3 列值写入 Excel 工作表