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
但我现在又得到了一个错误:
来自:
WS.Name = strNewName
答案 0 :(得分:0)
此行执行后
Set WS = Nwkbook.Worksheets.Add
WS
是一个Worksheet对象,其中包含对刚刚添加的新工作表的引用。然后,您可以更改其名称:
WS.Name = strNewName
事实上,我建议您使用Dim
Dim WS As Worksheet
这是一个好主意,原因有很多,其中一个原因是您可以使用自动完成功能轻松查看您可以对对象执行的操作: