Macro que se da error

Hola, buenos días, recurro a ti como siempre porque me agrada que respondes pronto y certero.
Hoy tengo el siguiente problema, la macro que a continuación te detallo da error al tratar de ejecutar la instrucción Range("K2"). Select.
Me podrías ayudar a que la ejecute. Gracias
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("ENTRADA").Select
Range("K2").Select
ActiveCell.FormulaR1C1 = "SI"
Range("origen").Select
    For i = 1 To 35
    valor = ActiveCell
    veces = ActiveCell.Offset(1, 0)
        For j = 1 To veces
            If Range("inicio") = "" Then
               Range("inicio") = valor
            Else
               Range("m5000").End(xlUp).Offset(1, 0).Select
               ActiveCell = valor
            End If
        Next
        Range("origen").Offset(2, 0).Select
        ActiveCell.Name = "origen"
    Next
    Range("G12").Select
    ActiveCell.Name = "origen"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub

1 respuesta

Respuesta
1
El botón lo has dibujado en otra hoja y te da "Error en el método Select de la clase Range" no se puede seleccionar así hay que hacerlo de esta forma:
Primero aunque tu le has cambiado el nombre a la hoja Excel las nombra como Hoja1, 2,3,4... pues tienes que ver que hoja es la que tu llamas ENTRADA, vamos a suponer que es la 4 pues el código quedaría así:
Sheets("Hoja4").select
ActiveSheet.[k2].Select
Y ya lo tienes.
>Un saludo
>Julio
Gracias por tu respuesta pero disculpa mi ignorancia, como le hago para saber que número de hoja es la que yo llamo "entrada' si ya la renombre?
Saludos
Pues pulsas encima de la etiqueta ENTRADA con el botón derecho y eliges ver código te aparecerá el editor de VBA y tendrás marcada la hoja con el nombre de Excel y el que tu le has dado.
>Un saludo
>Julio
Hola, al parecer la hoja es la hoja9 lo saque parándome sobre el nombre de la hoja 'entrada' y preionando el botón derecho, seleccionando la opción 'ver código'.
Ahora el error dice
Error 9
'subíndice fuera del intervalo'
¿Qué otra cosa podrá ser?
Gracias
Comprueba que el código lo has puesto bien:
Sheets("Hoja9").select
ActiveSheet.[k2].Select
Prueba y me dices
>Un saludo
>Julio
Qué pena contigo pero sigue saliendo el error.
Tedejo la instrucción completa por si acaso.
Gracias mil
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Hoja9").Select
ActiveSheet.[K2].Select
ActiveCell.FormulaR1C1 = "SI"
Sheets("Hoja4").Select
Range("origen").Select
    For i = 1 To 35
    valor = ActiveCell
    veces = ActiveCell.Offset(1, 0)
        For j = 1 To veces
            If Range("inicio") = "" Then
               Range("inicio") = valor
            Else
               Range("m5000").End(xlUp).Offset(1, 0).Select
               ActiveCell = valor
            End If
        Next
        Range("origen").Offset(2, 0).Select
        ActiveCell.Name = "origen"
    Next
    Range("G12").Select
    ActiveCell.Name = "origen"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub
Es que no has seguido las instrucciones que te he puesto no solo sirve para seleccionar una celda también los nombres de rangos, tu tienes esto:
Sheets("Hoja4").Select
Range("origen").Select
Y deberías de tener esto:
Sheets("Hoja4").Select
ActiveSheet.Range("origen").Select
Tenías que decirme donde te daba el eroor no que volvía a darlo me estabas volviendo loco hasta que no me has enviado la macro. Cuando te da un error pulsas en depurar y la linea que da el error te la maarca en amarillo si no es la que te había dicho debías decirme o haberte dado cuenta tu de que era en otra linea.
>Un saludo
>Julio
PD: corrige todas las lineas que tienes mal.
La macro sin esto
Sheets("Hoja9").Select
ActiveSheet.[K2].Select
ActiveCell.FormulaR1C1 = "SI"
Sheets("Hoja4"). Select
Funciona perfecto, solo quiero que vaya a la hoja entrada celda k2 y escriba 'si' luego resgrese. ¿Me entiendes?
Saludos
Vale, pues ya te he dicho como:
Private Sub CommandButton1_Click()
Application.ScreenUpdating = False
Sheets("Hoja9").Select
ActiveSheet.[K2].Select
ActiveCell.Value= "SI"
Sheets("Hoja4").Select
ActiveSheet.Range("origen").Select
    For i = 1 To 35
    valor = ActiveCell
    veces = ActiveCell.Offset(1, 0)
        For j = 1 To veces
            If Range("inicio") = "" Then
               Range("inicio") = valor
            Else
               Range("m5000").End(xlUp).Offset(1, 0).Select
               ActiveCell = valor
            End If
        Next
        Range("origen").Offset(2, 0).Select
        ActiveCell.Name = "origen"
    Next
    Range("G12").Select
    ActiveCell.Name = "origen"
End Sub
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
End Sub

Prueba ahora, las dos ultimas lineas te sobran no tienen ningún código.
>Un saludo
>Julio
Debes de finalizar y puntuar la consulta, si no en sucesivas ocasiones No se tendrán en cuenta tus consultas y se descartaran.
Qué pena !
Creí que ya lo había hecho.
Has sido muy pero muy amable.
Nuevamente te ofrezco mis disculpas por no haber cerrado el tema anteriormente.
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas