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

时间:2015-04-07 08:53:00

标签: excel vba excel-vba runtime-error

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
  

类型不匹配。

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


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

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

但我现在又得到了一个错误: enter image description here

来自:

WS.Name = strNewName

1 个答案:

答案 0 :(得分:0)

此行执行后

Set WS = Nwkbook.Worksheets.Add

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

WS.Name = strNewName

事实上,我建议您使用Dim

正确声明变量
Dim WS As Worksheet

这是一个好主意,原因有很多,其中一个原因是您可以使用自动完成功能轻松查看您可以对对象执行的操作:

enter image description here