根据单元格值删除工作表

use*_*305 -1 excel vba

我想根据单元格值删除工作表。

例如,我希望单元格“T3”具有我要删除的工作表的值。有 50 多张纸,并且全部都有 4 位数字的数值 (1234)。

Sub Rectangle2_Click()
'deactivate alerts - stop 'are you sure you want to delete pop up'
Application.DisplayAlerts = False

'set worksheet you want to delete
sheettodelete = Range("T3").Value

'deletes sheet
Worksheets(sheettodelete).Delete

're-enable alerts
Application.DisplayAlerts = True
End Sub
Run Code Online (Sandbox Code Playgroud)

上面的代码是我发现应该运行宏的代码,但是,它在“Worksheets(sheettodelete).delete”处出错,并出现错误 Run-tim Error '9': Subscript out of range。我检查并确认工作簿中确实存在该工作表。

Rik*_*tel 5

它在这里执行得很好,但是,在第二次尝试时,它显然会失败,因为该对象将不再存在。此外,如果 T3 中有拼写错误,您也会收到此错误。

这是一个不会产生错误的细微改进:

Sub test()
Dim sheetToDelete as String
Dim ws as Worksheet
Application.DisplayAlerts = False

sheetToDelete = Worksheets("SheetThatHoldsTheCell").Range("T3").value

On Error Resume Next 'To avoid the subscript out of range error
Set ws = Worksheets(sheetToDelete)
On Error Goto 0 

If not ws is nothing then ws.delete 'Test if the sheet exists.

Set ws = Nothing

Application.DisplayAlerts = True
End Sub
Run Code Online (Sandbox Code Playgroud)