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

vba: How can I change the name of a new added workbook in an inactive worksheet?

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

我正在处理一个名为 "abc" 的活动工作簿,还有另外两个名为 "S" 和 "N" 的工作簿。

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

以上是我的代码,但是,这条语句报错:

   Worksheets(WS).Name = strNewName

Type mismatch.

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


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

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

但我现在收到另一个错误:

来自:

WS.Name = strNewName

执行此行后

Set WS = Nwkbook.Worksheets.Add

WS 是一个 Worksheet 对象,它包含对刚刚添加的新工作表的引用。然后您可以像这样更改它的名称:

WS.Name = strNewName

事实上,我建议您使用 Dim

正确声明您的变量
Dim WS As Worksheet

出于数百万种不同的原因,这是一个好主意,其中之一是您可以使用自动完成功能轻松查看您可以对对象执行的操作: