2017-11-08 18 views
1

を取得し、私はリスト にすべてのシートnotを削除するにはフィルタ機能を使用しようとしていますが、私はフィルタ機能は、コンパイルエラーに

Compile error: Wrong number of arguments or invalid property assignment

エラーを取得する私は

おかげで間違っているものを参照してくださいカントこれに関するヘルプ

Sub DelShtsNotInList() 
Dim Arr 
Dim Sht As Worksheet 

Arr = Array("A", "B", "C") 

Application.DisplayAlerts = False 
    For Each Sht In Worksheets 
     If Not UBound(filter(Arr, "A", True, vbTextCompare)) >= 0 Then 
      Sht.Delete 
     End if 
    Next Sht 
Application.DisplayAlerts = True 

End Sub 

答えて

1

私はコンパイルエラーが他のSubまたはFunctionから来ていると思いますが、これは大丈夫です。ただし、次のようにしてください:

Sub DelShtsNotInList() 

    Dim Arr As Variant 
    Dim Sht As Worksheet 

    Arr = Array("A", "B", "C") 

    Application.DisplayAlerts = False 
    For Each Sht In Worksheets 
     If Not UBound(Filter(Arr, Sht.Name, True, vbTextCompare)) >= 0 Then 
      If Worksheets.Count = 1 Then 
       MsgBox "Error is coming" 
       Exit Sub 
      End If 
      Sht.Delete 
     End If 
    Next Sht 
    Application.DisplayAlerts = True 

End Sub 

最後のワークシートを削除しようとすると、msgboxが表示されます。

+0

Vityata、私が何をしても、 'filter'が' blue'にハイライトされ、エラーmsgが出ます。どのような考えがこれを引き起こすのだろうか?ありがとう。私はExcelを使用しています2016 – xyz

+0

@Tim - nope、sry。単純に新しいブックを作成して実行するとどうなりますか? – Vityata

+0

あなたはそれを '私はコンパイルエラーが他のSubやFunctionから来ていると思います。ありがとうございました – xyz

1

これはうまくいくようです:

Sub DelShtsNotInList() 
    Dim Arr 
    Dim Sht As Worksheet 

    Arr = Array("A", "B", "C") 

    Application.DisplayAlerts = False 
    For Each Sht In Worksheets 
     If Not UBound(Filter(Arr, Sht.Name, True, vbTextCompare)) >= 0 Then 
      Sht.Delete 
     End If 
    Next Sht 
    Application.DisplayAlerts = True 

End Sub 

注意:最後のワークシートを削除することはできないため、すべての名前が一致すると実行時エラーが発生することに注意してください。

+0

助けてくれてありがとう – xyz

関連する問題