If Error(Sheets(ws_str)) = True Then Exit Sub

Devuelve el error de tiempo de ejecución 9. Sé que esta hoja no existe. ¿Cómo hago un manejo de errores en casos donde la hoja de trabajo no existe?

2
bub 18 oct. 2017 a las 14:17

3 respuestas

La mejor respuesta

Pruebe el pequeño fragmento de código a continuación:

Option Explicit

Sub SheetExits()

Dim ws As Worksheet
Dim ws_str As String

ws_str = "aaa" ' for test

On Error Resume Next
Set ws = Worksheets(ws_str)
On Error GoTo 0
If ws Is Nothing Then Exit Sub    

End Sub
2
Shai Rado 18 oct. 2017 a las 11:21

Esto resolverá tu problema:

Sub ErrorHandling()
On Error GoTo ExitSub
Dim ws As Worksheet

Set ws = Worksheets("NonExistingSheet") 'it will throw an error
MsgBox ("This won't be displayed")

ExitSub:
End Sub

Básicamente, al principio, defina dónde debe reanudar su código en caso de error. Para satisfacer su requisito, coloque el punto de reanudación justo antes de End Sub, para que vaya directamente allí en caso de error.

2
Michał Turczyn 18 oct. 2017 a las 11:24
 Function SheetExists(sheetname as string) as boolean
 On error goto whoops
 dim ws as worksheet
 set ws = worksheets(sheetname)
 set ws = nothing
 sheetexists = true
 exit function
 whoops:
 sheetexists = false
 end function 
2
Harassed Dad 18 oct. 2017 a las 14:06