excel VBA -如果工作表的名称不在数组中,则删除工作表

xyhw6mcr  于 2022-11-18  发布在  其他
关注(0)|答案(2)|浏览(199)

我尝试使用in_array函数,该函数根据数组列表中存在的值返回True或False,然后我想删除名称不在数组中的工作表,但我得到运行时错误“9”:删除几个电子表格后,当只剩下两个名字是耐克和第二个是随机的,下标超出范围。你知道如何解决这个问题吗?
第一个

dgsult0t

dgsult0t1#

sub delete_without_asking()
    Application.DisplayAlerts = False 'this stops from asking for each sheet!!!
    Application.ScreenUpdating = False
        my_array = Array("Nike", "Adidas")
        
        For Each blatt In ActiveWorkbook.Sheets
        test_value = blatt.Name
        Z = in_array(my_array, test_value)
            If Z = False Then
                blatt.Delete
            End If
         Next blatt
    
    Application.DisplayAlerts = True
    Application.ScreenUpdating = True
   End Sub
ergxz8rk

ergxz8rk2#

还有其他方法可以检查数组,而不需要遍历数组:

my_array = Array("Nike", "Adidas")
For Each sh In ActiveWorkbook.Sheets
    If UBound(Filter(my_array, sh.Name, True, vbTextCompare)) < 0 Then sh.Delete
Next sh

相关问题