Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/amazon-s3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vba 删除特定图纸和不符合标准的图纸_Vba_Excel - Fatal编程技术网

Vba 删除特定图纸和不符合标准的图纸

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

我有一个宏,我在其中创建了许多工作表,这些工作表的名称取自“明细表”中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.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