CORREGIR error de subíndice de intervalo

Tengo este código:

Sub ANTERIOR()
Application.ScreenUpdating = False
Application.OnKey "{f3}", "WAO"
End Sub

Sub WAO()

'Por.Dante Amor
hoja = Sheets("temporal").[A10]
If hoja <> "" Then
Sheets(hoja).Select
Else
MsgBox "No hay hoja anterior"
End If

End Sub

El cual con "F3" la ejecuto, funcionaba bien (no se que le paso)

Ahora me pasa esto:

Tengo mis hojas las cuales cambian de nombre con esto:

Worksheets(1).Name = Sheets("REP X TURNO"). Range("k7").Value
Worksheets(2).Name = Sheets("REP X TURNO"). Range("w7").Value
Worksheets(3).Name = Sheets("REP X TURNO"). Range("ai7").Value
Worksheets(4).Name = Sheets("REP X TURNO"). Range("au7").Value
Worksheets(5).Name = Sheets("REP X TURNO"). Range("bg7").Value

Al inciar el libro o mi formulario tengo esto:

 Sheets("temporal").[A10] = ActiveSheet.Name

pero me esta saliendo error y no encuentro el problema 

2 Respuestas

Respuesta
1

Si la hoja se llamaba "algo" y entonces en temporal.[A10] tiene el texto "algo", luego le cambias el nombre de "algo" a "otro", y luego presionas F3, lo que hace la macro es tratar de seleccionar la hoja "algo", pero ya le cambiaste el nombre, por eso te envía el error.

Puedes solucionarlo de varias formas.

1. Si le estás cambiando el nombre a "algo" a "otro", entonces tienes que ir a  temporal.[A10] y poner el texto "otro".

2. En la macro wao, pon la instrucción:

On error Resume Next

De esa forma si la hoja no existe no te enviará error, pero tampoco seleccionará ninguna hoja.

3. En la macro wao validar si la hoja "algo", si existe: seleccionar la hoja, si no existe: enviar un msg de error.

Aplica la opción que desees.

S a l u d o s

¿Y no me puedes modificarlo? ¿En vez de que sea como antes que sea algo así?

 Sheets("temporal").[a10] = ActiveSheet.CODEName

Que arroje el nombre interno de la hoja y lo ponga en A10 para luego seleccionarla con la modificación de este código:

Sub SeleccionarAnterior()
'Por.Dante Amor
hoja = Sheets("temporal").[a10]
If hoja <> "" Then
Sheets(hoja).Select
Else
MsgBox "No hay hoja anterior"

End If
End Sub

¿Funcionaria?

Esto está bien:

Sheets("temporal").[a10] = ActiveSheet.CODEName

La siguiente macro quedaría así:

Sub SeleccionarAnterior()
'Por.Dante Amor
    For Each h In Sheets
        If h.CodeName = Sheets("temporal").[a10] Then
            Set lahoja = h
            Exit For
        End If
    Next
    If Not lahoja Is Nothing Then
        lahoja.Select
    Else
        MsgBox "No hay hoja anterior"
    End If
End Sub

S a l u d o s

Desde la mañana estoy checando este código, estaba viendo uno que también tu me hiciste e intente adaptarlo si me funciono..

'On Error Resume Next
hoja = InputBox("ANOTA EL NÚMERO DE VENDEDOR", "Panificadora el RETORNO", Default:=Range("A10"))
If hoja = "" Then Exit Sub
existe = False
For Each h In Sheets
If UCase(h.Name) = UCase(hoja) Then
existe = True
Exit For
End If
Next
If existe Then
Sheets(hoja).Select
End If

Pero el que me acabas de pasar esta más que excelente... ME PUEDES AYUDAR EN LA OTRA PREGUNTA QUE TE COMENTE SIGUE ABIERTA :C

La tengo presente, en la primera oportunidad la reviso. S  al u d o s

Respuesta
1

En vez de poner

Sheets("temporal").[A10] pon

Sheets("temporal"). Range("A10")

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas