¿DONDE ESTA EL ERROR EN ESTA MACRO? ME CIERRA EL EXCEL!!!

07/11/2006 - 09:50 por cbm | Informe spam
Private Sub CommandButton12_Click()


Dim wksH As Worksheet
Dim mtr(), n


For Each wksH In Worksheets
If Left(wksH.Name, 6) = "Acción" Then
n = n + 1
ReDim Preserve mtr(1 To n)
mtr(n) = wksH.Name
End If
Next
Worksheets(mtr()).Select


Set wksH = Nothing


Buenas, con esta macro me borra todas las hojas que se llamen Tarea+nº
y Acción+nº, el problema es que una vez ejecutada cuando no hay hojas
directamente me sale el amable mensaje de que excel ha detectado un
problema y debe cerrarse.
No controlo mucho y creo que ya he probado a poner el on error resume
next por todos los lados sin exito.
¿SUGERENCIAS? GRACIAS!!!

Private Sub CommandButton12_Click()

Dim wksH As Worksheet
Dim mtr(), n

For Each wksH In Worksheets
If Left(wksH.Name, 6) = "Acción" Then
n = n + 1
ReDim Preserve mtr(1 To n)
mtr(n) = wksH.Name
End If
Next
Worksheets(mtr()).Select

Set wksH = Nothing

For Each wksH In Worksheets
If Left(wksH.Name, 5) = "Tarea" Then
n = n + 1
ReDim Preserve mtr(1 To n)
mtr(n) = wksH.Name
End If
Next
Worksheets(mtr()).Select

Set wksH = Nothing
ActiveWindow.SelectedSheets.Delete

On Error Resume Next

End Sub
 

Leer las respuestas

#1 cbm
07/11/2006 - 09:53 | Informe spam
Perdonad, se me ha ido el dedo, es así

Buenas, con esta macro me borra todas las hojas que se llamen Tarea+nº
y Acción+nº, el problema es que una vez ejecutada cuando no hay hojas
directamente me sale el amable mensaje de que excel ha detectado un
problema y debe cerrarse.
No controlo mucho y creo que ya he probado a poner el on error resume
next por todos los lados sin exito.
¿SUGERENCIAS? GRACIAS!!!

Private Sub CommandButton12_Click()

Dim wksH As Worksheet
Dim mtr(), n

For Each wksH In Worksheets
If Left(wksH.Name, 6) = "Acción" Then
n = n + 1
ReDim Preserve mtr(1 To n)
mtr(n) = wksH.Name
End If
Next
Worksheets(mtr()).Select

Set wksH = Nothing

For Each wksH In Worksheets
If Left(wksH.Name, 5) = "Tarea" Then
n = n + 1
ReDim Preserve mtr(1 To n)
mtr(n) = wksH.Name
End If
Next
Worksheets(mtr()).Select

Set wksH = Nothing
ActiveWindow.SelectedSheets.Delete

On Error Resume Next

End Sub

Preguntas similares