vba:如何更改非活动工作表中新添加工作簿的名称?

vba:如何更改非活动工作表中新添加工作簿的名称?,vba,excel,runtime-error,Vba,Excel,Runtime Error,我正在编写一个名为“abc”的活动工作簿,另外还有两个名为“S”和“N”的工作簿 现在我想让S中的D行值成为N中每个新工作表的名称(不重复) 以上是我的代码,但是,此语句出现错误: With Swkbook.Worksheets("SalesRecords") For intIndex = 1 To .Range("D1", .Range("D1048576").End(xlUp)).Rows.Count - 1 strNewName = .Range("d2").Offset(intInd

我正在编写一个名为“abc”的活动工作簿,另外还有两个名为“S”和“N”的工作簿

现在我想让S中的D行值成为N中每个新工作表的名称(不重复)

以上是我的代码,但是,此语句出现错误:

With Swkbook.Worksheets("SalesRecords")

For intIndex = 1 To .Range("D1", .Range("D1048576").End(xlUp)).Rows.Count - 1

strNewName = .Range("d2").Offset(intIndex - 1, 0).Value

Namesexist = False

For Each wksheet In Nwkbook.Worksheets

            If VBA.LCase(strNewName) = VBA.LCase(wksheet.Name) Then
               Namesexist = True
           End If
        Next wksheet

        If namesexits = False Then
         Set WS = Nwkbook.Worksheets.Add
         Worksheets(WS).Name = strNewName
        End If
 Next intIndex
 End With
类型不匹配

你能帮我解决这个问题吗?谢谢你


我在with语句之前声明了变量:

   Worksheets(WS).Name = strNewName
但我现在得到另一个错误:

来自:

Dim intIndex As Integer
Dim strNewName As String
Dim Namesexist As Boolean

在执行这一行之后

WS.Name = strNewName
WS
是一个工作表对象,其中包含对刚刚添加的新工作表的引用。然后可以按如下方式更改其名称:

Set WS = Nwkbook.Worksheets.Add
事实上,我建议您使用
Dim

WS.Name = strNewName
这是一个好主意,原因有数百万种,其中之一是您可以使用autocomplete轻松查看您可以对对象执行的操作:


谢谢你。我已经声明了变量,但仍然有错误。您可能会看到这个问题的我的版本:(好的,那么已经有另一张同名的工作表了吗?请尝试在调试模式下单步检查代码,并观察变量的演变()。如果这没有帮助,那么我建议您查看以下指导:。感谢您的帮助!问题已解决!
Dim WS As Worksheet