【问题标题】:Assign names to spreadsheets为电子表格分配名称
【发布时间】:2015-05-29 15:44:03
【问题描述】:

我正在尝试创建多个工作表并根据在同一个工作表中建立的范围为它们分配预定义的名称。

例如,我在工作表“名称”中的范围 (A1:A3) 具有以下值:

Test1
Test2
Test3

我想在名为“Test1”、“Test2”和“Test3”的同一个工作表中创建新工作表

我正在循环使用下面的命令,但出现错误:

Sheets.Add After:=Sheets(Sheets.Count)
ActiveSheet.Name = CStr(Range("A2"))

【问题讨论】:

  • 请让我们看看宏的完整代码...

标签: vba excel


【解决方案1】:

您必须在循环中引用每个名称:

Sub SheetAddre()
   Dim a As Range

   For Each a In Sheets("Names").Range("A1:A3")
      Sheets.Add after:=Sheets(Sheets.Count)
      ActiveSheet.Name = a.Value
   Next a
End Sub

【讨论】:

  • CA_CA:注意他每次都在工作表列表的最后添加工作表(after:=参数)
【解决方案2】:

Gary's Student 的代码运行良好。 我只能想象两种错误:

  1. 工作表名称不存在

  2. A1:A3 范围内的一张工作表已存在

使用此代码,您可以检查问题出在哪里:

Sub SheetAddre()
   Dim a As Range
    If (Not SheetExists("Names")) Then
        MsgBox ("The sheet called Names does not exists")
        Exit Sub

    End If
   For Each a In Sheets("Names").Range("A1:A3")

        If (SheetExists(a.Value)) Then
            MsgBox ("The sheet called" + a.Value + " already exists")
            Exit Sub

        End If


      Sheets.Add after:=Sheets(Sheets.Count)
      ActiveSheet.Name = a.Value
   Next a
End Sub


Function SheetExists(n) As Boolean
  SheetExists = False
  For Each ws In Worksheets
    If n = ws.Name Then
      SheetExists = True
      Exit Function
    End If
  Next ws
End Function

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-22
    • 1970-01-01
    • 1970-01-01
    • 2021-07-18
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多