Vba 删除特定图纸和不符合标准的图纸
我有一个宏,我在其中创建了许多工作表,这些工作表的名称取自“明细表”中c列第7单元之后的值。我使用下面的代码来实现这一点Vba 删除特定图纸和不符合标准的图纸,vba,excel,Vba,Excel,我有一个宏,我在其中创建了许多工作表,这些工作表的名称取自“明细表”中c列第7单元之后的值。我使用下面的代码来实现这一点 Sub CreateDataSheets() 'Updateby Extendoffice 20161215 Dim xRg As Variant Dim wSh As Excel.Worksheet Dim wBk As Excel.Workbook Set wSh = ActiveSheet Set wBk = ActiveWorkbook Application.Scr
Sub CreateDataSheets()
'Updateby Extendoffice 20161215
Dim xRg As Variant
Dim wSh As Excel.Worksheet
Dim wBk As Excel.Workbook
Set wSh = ActiveSheet
Set wBk = ActiveWorkbook
Application.ScreenUpdating = False
For Each xRg In wSh.Range("C7", Range("C7").End(xlDown))
If Not IsError(xRg) Then
If xRg <> "" Then
If Not WorksheetExists((xRg)) Then
With wBk
.Sheets.Add after:=.Sheets(.Sheets.Count), Type:="L:\London\General\Reference & Tools\Software\BIM\IiA_Specifications\Excel\Uk Specification Template.xltx"
ActiveSheet.Name = xRg.Value
End With
End If
End If
End If
Next xRg
Application.ScreenUpdating = True
End Sub
如果你有任何想法,我都会非常感激的。在一个变化的集合上迭代通常是个坏主意。改为做类似的事情
For i = Sheets.Count to 1 Step -1
If ....
Sheets(i).Delete
End If
Next i
DirArray
被创建为一个变量
,而数组的位置4
ArrayOne
实际上是另一个数组,而不是字符串
要修复此问题,请按如下方式初始化数组one
:
ArrayOne = Array("Home", "Schedule", "CoverSheet")
Dim Name As Variant
For Each Name In DirArray
If Name <> "" Then
ReDim Preserve ArrayOne(UBound(ArrayOne) + 1)
ArrayOne(UBound(ArrayOne)) = Name
End If
Next
ArrayOne=Array(“主页”、“日程安排”、“封面”)
作为变体的Dim名称
对于DirArray中的每个名称
如果名称为“”,则
重读保存数组(UBound(数组)+1)
ArrayOne(UBound(ArrayOne))=名称
如果结束
下一个
它也不会考虑您选择的范围内的空值。< /P> 考虑更改您的删除步骤,如上所示“不起作用”或“不起作用”?如果是后者,请提供错误消息等详细信息。
ArrayOne = Array("Home", "Schedule", "CoverSheet")
Dim Name As Variant
For Each Name In DirArray
If Name <> "" Then
ReDim Preserve ArrayOne(UBound(ArrayOne) + 1)
ArrayOne(UBound(ArrayOne)) = Name
End If
Next