¿Cómo soluciono el error "RUN-TIME ERROR '9' " subscript out of range? Se genera al tener dos libros abiertos

Ayer solicite ayuda con esta macro a la cual me dieron solución al problema que me generaba. Ahora hay un nuevo error en el cual me gustaría que me orientaran sobre como puedo solucionarlo. Gracias de antemano.

Esta es la macro y genera el error "Run-Time Error '9' Subscript out of range" cuando la macro se esta ejecutando y hay dos libros abiertos y de la macro se pasa a trabajar con el otro libro, es ahí donde genera este error.

Public RunWhen As Double
Sub Parpadear()
    Worksheets("NEW STYLES").Unprotect
    With ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font
        If .ColorIndex = 48 Then
            .ColorIndex = 2
        Else
            .ColorIndex = 48
        End If
    End With
    Worksheets("NEW STYLES").Protect
    RunWhen = Now + TimeSerial(0, 0, 1)
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , True
End Sub
Sub noparpadear()
    Worksheets("NEW STYLES").Unprotect
    ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font.ColorIndex = _
    xlColorIndexAutomatic
    Worksheets("NEW STYLES").Protect
    On Error Resume Next
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , False
End Sub

1 Respuesta

Respuesta
1

Ya lo revisé, falta el objeto del libro

Public RunWhen As Double
'
Sub Parpadear()
    ThisWorkbook.Worksheets("NEW STYLES").Unprotect
    With ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font
        If .ColorIndex = 48 Then
            .ColorIndex = 2
        Else
            .ColorIndex = 48
        End If
    End With
    ThisWorkbook.Worksheets("NEW STYLES").Protect
    RunWhen = Now + TimeSerial(0, 0, 1)
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , True
End Sub
'
Sub noparpadear()
    ThisWorkbook.Worksheets("NEW STYLES").Unprotect
    ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font.ColorIndex = _
    xlColorIndexAutomatic
    ThisWorkbook.Worksheets("NEW STYLES").Protect
    On Error Resume Next
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , False
End Sub

sal u dos

Agregué screenupdating para que cuando estás en el otro libro no se "brinque" la pantalla

Public RunWhen As Double
'
Sub Parpadear()
    Application.ScreenUpdating = False
    ThisWorkbook.Worksheets("NEW STYLES").Unprotect
    With ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font
        If .ColorIndex = 48 Then
            .ColorIndex = 2
        Else
            .ColorIndex = 48
        End If
    End With
    ThisWorkbook.Worksheets("NEW STYLES").Protect
    RunWhen = Now + TimeSerial(0, 0, 1)
    Application.ScreenUpdating = True
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , True
End Sub
'
Sub noparpadear()
    ThisWorkbook.Worksheets("NEW STYLES").Unprotect
    ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font.ColorIndex = _
    xlColorIndexAutomatic
    ThisWorkbook.Worksheets("NEW STYLES").Protect
    On Error Resume Next
    Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , False
End Sub

.

.

¡Gracias! 

Esta excelente!!

Hola, buen día.

Me ha surgido este mensaje:

Run-time error ‘1004’: Method ‘OnTime’ of object’_Application’ failed

Este aparece cuando se abre un nuevo libro y este viene con "Protected View" (dejo imagen más abajo).

Esta es la macro. Gracias de antemano.

Saludos.

Public RunWhen As Double

Sub Parpadear()

   Application.ScreenUpdating = False

   ThisWorkbook.Worksheets("NEW STYLES").Unprotect

   With ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font

       If .ColorIndex = 48 Then

           .ColorIndex = 2

       Else

           .ColorIndex = 48

       End If

   End With

   ThisWorkbook.Worksheets("NEW STYLES").Protect

   RunWhen = Now + TimeSerial(0, 0, 1)

   Application.ScreenUpdating = True

   Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , True

End Sub

Sub noparpadear()

   ThisWorkbook.Worksheets("NEW STYLES").Unprotect

   ThisWorkbook.Worksheets("NEW STYLES").Range("B2").Font.ColorIndex = _

   xlColorIndexAutomatic

   ThisWorkbook.Worksheets("NEW STYLES").Protect

   On Error Resume Next

   Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , False

End Sub

Si presionas el botón "Enable Editing", ¿qué pasa?

¿En cuál línea de la macro se detiene?

Al abrir el libro que viene con "Enable Editing", genera el error. Al dar click en "End" y luego dar click en "Enable Editing", la macro se detiene.

Esta es la linea: Application.OnTime RunWhen, "'" & ThisWorkbook.Name & "'!Parpadear", , True

Puedes ser la versión de excel.

Ya lo probé con mi archivo, continúa parpadeando, abro un archivo de solamente lectura y el parpadeo continúa, me cambio de un libro a otro y el parpadeo continúa.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas