¿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

Preguntas similare

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
Respuesta Responder a este mensaje
#2 L. Garcia
07/11/2006 - 11:04 | Informe spam
Hola:

Sin haberlo probado, yo tendria cuidado de que la Hoja Activa en el momento
de lanzar la macro no fuera una de las borradas. Y el On Error resume Next
debe ir al principio de la Sub.

Tambien asegurarse que el codigo del Boton no esta dentro de una de las
hojas borradas.

Si sigues teniendo problemas, yo borraria las hojas 1 por 1, suele dar menos
problemas.

Espero que te sirva

Saludos

"cbm" escribió en el mensaje
news:
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
Respuesta Responder a este mensaje
#3 cbm
07/11/2006 - 11:14 | Informe spam
Gracias L.
Lo he solucionado con estos cambios que me han propuesto en otro grupo:
(por si le sirve a alguien)

Private Sub CommandButton12_Click()

On Error Resume Next
Application.DisplayAlerts = False
For Each wksH In Worksheets
If Left(wksH.Name, 6) = "Acción" Or _
Left(wksH.Name, 5) = "Tarea" Then
wksH.Delete
End If
Next
Application.DisplayAlerts = True
On Error GoTo 0


Set wksH = Nothing


End Sub

L. Garcia ha escrito:

Hola:

Sin haberlo probado, yo tendria cuidado de que la Hoja Activa en el momento
de lanzar la macro no fuera una de las borradas. Y el On Error resume Next
debe ir al principio de la Sub.

Tambien asegurarse que el codigo del Boton no esta dentro de una de las
hojas borradas.

Si sigues teniendo problemas, yo borraria las hojas 1 por 1, suele dar menos
problemas.

Espero que te sirva

Saludos

"cbm" escribió en el mensaje
news:
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
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida