2017-11-24 5 views
0

リストボックスから選択したシートを削除しようとしています。シート名を表示するmsgboxコマンドは正しいですが、私は以下のようなエラーが出るようです:シートの削除中にエラーが発生しました。ランタイムエラー1004:範囲クラスの削除メソッドが失敗しました

ランタイムエラー1004:範囲クラスの削除メソッドが失敗しました。

ここに私のコードです。

If ListBox2.Selected(i) Then 
     Worksheets(ListBox2.List(i)).Unprotect "asdf" 
     Worksheets(ListBox2.List(i)).Delete 
     MsgBox ListBox2.List(i) 
     sht = ListBox2.List(i) + "_Graph" 
     Worksheets(sht).Unprotect "asdf" 
     MsgBox sht 
     Worksheets(sht).Delete 
     Worksheets("Report").Rows(ListBox2.ListIndex + 2).Delete 
     MsgBox "KC " + ListBox2.List(i) + " Removed!" 

    End If 
+0

あなたは 'delete'メソッドを使う3行を持っていて、どの行が失敗しているのかを教えてもらえませんでした。最後のコマンドは' msgbox'コマンドです..... msgboxコマンドが正しいシート名を表示しているので、コード中の 'delete'メソッドのどれも失敗しているわけではありません。 ...あなたの問題は他の場所にあります – jsotola

+0

問題は最後の2行目にあります。そこに 'Range'オブジェクトに対して' Delete'メソッドを使用しています。 –

+0

"レポート"シートのオートフィルタまたはシートプロテクションはありますか? –

答えて

1

これを試してみてください:

Worksheets("Report").Rows(ListBox2.ListIndex + 2).EntireRow.Delete 

の代わり:

Worksheets("Report").Rows(ListBox2.ListIndex + 2).Delete 

(第2の最後の行に)。

関連する問題