Vba Excel Visual Basic复制表

Vba Excel Visual Basic复制表,vba,excel,Vba,Excel,我的目标是创建一段代码,为数组中的每个字符串创建模板工作表的副本-重命名复制的工作表以匹配字符串 这是我第一次将Microsoft Visual Basic用于应用程序。我已将代码添加到“ThisWorkbook”下。然而,当我运行代码时,我得到一个 下标超出范围 错误 Sub generateStationTabs() Dim stringNames() As Variant Dim currentString As String Dim

我的目标是创建一段代码,为数组中的每个字符串创建模板工作表的副本-重命名复制的工作表以匹配字符串

这是我第一次将Microsoft Visual Basic用于应用程序。我已将代码添加到“ThisWorkbook”下。然而,当我运行代码时,我得到一个

下标超出范围

错误

    Sub generateStationTabs()
        Dim stringNames() As Variant
        Dim currentString As String
        Dim previousSheet As String

        previousSheet = "Template                 "

        stringNames() = Array("String 1", "String 2", "String 3", "String 4", "String 5", "String 6", "String 7", "String 8", "String 9", "String 10", "String 11", "String 12", "String 13", "String 14", "String 15", "String 16", "String 17", "String 18", "String 19", "String 20", "String 21", "String 22", "String 23", "String 24", "String 25", "String 26", "String 27", "String 28", "String 29", "String 30")
        For indexVariable = 0 To UBound(stringNames)
            ' Pad String Name to 20 Characters Length       currentString = Left(stringNames(indexVariable) & Space(8), 20)
            ' Copy the Template worksheet to after the Previous Sheet
            ActiveWorkbook.Sheets("Template                 ").Copy after:=ActiveWorkbook.Sheets(previousSheet)         
            ' Rename the copied worksheet
            ActiveWorkbook.ActiveSheet.Name = currentString         
            ' Update the previous sheet
            previousSheet = currentString
        Next

    End Sub

您尚未定义
ActiveWorkbook.Sheets(previousSheet)
,因此无法找到它。本质上,您要求Excel查找尚未创建的工作表,因此无法找到

相反,你可以试试

ActiveWorkbook.Sheets(“模板”).Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)


…然后根据需要重命名工作表。

您尚未定义
ActiveWorkbook.Sheets(以前的工作表)
,因此无法找到它。本质上,您要求Excel查找尚未创建的工作表,因此无法找到

相反,你可以试试

ActiveWorkbook.Sheets(“模板”).Copy after:=ActiveWorkbook.Sheets(ActiveWorkbook.Sheets.Count)


…然后根据需要重命名工作表。

代码如下所示

Sub generateStationTabs()
    Dim stringNames() As Variant
    Dim currentString As String
    Dim previousSheet As String

    previousSheet = "Template"

    stringNames() = Array("String 1", "String 2", "String 3", "String 4", "String 5", "String 6", "String 7", "String 8", "String 9", "String 10", "String 11", "String 12", "String 13", "String 14", "String 15", "String 16", "String 17", "String 18", "String 19", "String 20", "String 21", "String 22", "String 23", "String 24", "String 25", "String 26", "String 27", "String 28", "String 29", "String 30")
    For i = 0 To UBound(stringNames)
        ' Pad String Name to 20 Characters Length       currentString = Left(stringNames(indexVariable) & Space(8), 20)
        ' Copy the Template worksheet to after the Previous Sheet
        ActiveWorkbook.Sheets("Template").Copy after:=ActiveWorkbook.Sheets(Sheets.Count)
        ' Rename the copied worksheet
        ActiveWorkbook.ActiveSheet.Name = stringNames(i)
        ' Update the previous sheet
        'previousSheet = currentString
    Next

End Sub

代码是这样的

Sub generateStationTabs()
    Dim stringNames() As Variant
    Dim currentString As String
    Dim previousSheet As String

    previousSheet = "Template"

    stringNames() = Array("String 1", "String 2", "String 3", "String 4", "String 5", "String 6", "String 7", "String 8", "String 9", "String 10", "String 11", "String 12", "String 13", "String 14", "String 15", "String 16", "String 17", "String 18", "String 19", "String 20", "String 21", "String 22", "String 23", "String 24", "String 25", "String 26", "String 27", "String 28", "String 29", "String 30")
    For i = 0 To UBound(stringNames)
        ' Pad String Name to 20 Characters Length       currentString = Left(stringNames(indexVariable) & Space(8), 20)
        ' Copy the Template worksheet to after the Previous Sheet
        ActiveWorkbook.Sheets("Template").Copy after:=ActiveWorkbook.Sheets(Sheets.Count)
        ' Rename the copied worksheet
        ActiveWorkbook.ActiveSheet.Name = stringNames(i)
        ' Update the previous sheet
        'previousSheet = currentString
    Next

End Sub