La macro brinca a una celda que no debe brincar...

Para DANTE

Recientemente me ayudaste con el sig código

Private Sub Worksheet_SelectionChange(ByVal Target As Range)'Act.Por.Dante Amor    If Intersect(Target, Columns("A")) Is Nothing Then Exit Sub    'controla que se haya seleccionado 1 sola celda    If Target.Count > 1 Then Exit Sub    '    cantidad = InputBox("Si estás seguro, captura la cantidad:", "Seleccionaste " & Range("B" & Target.Row))    '    If cantidad = 0 Or cantidad = "" Then Exit Sub    Application.ScreenUpdating = False    '    Sheets("NUEVO SERVICIO A DOMICILIO").Select    'si la celda activa está fuera  del rango 18:24 no se ejecuta    If ActiveCell.Row < 18 Or ActiveCell.Row > 24 Then        MsgBox "Ya no hay filas para ingresar productos.", , "ERROR"        'EVALUA AQUÍ A QUÉ HOJA REGRESAR      Exit Sub    End If    'ya estará la celda destino seleccionada    'desprotejo    ActiveSheet.Unprotect "28021990"    'ActiveSheet.Range("D" & ActiveCell.Row) = Cells(Target.Row, "A")    'clave    ActiveSheet.Range("G" & ActiveCell.Row) = Cells(Target.Row, "B")    'producto    ActiveSheet.Range("L" & ActiveCell.Row) = Cells(Target.Row, "C")    ActiveSheet.Range("F" & ActiveCell.Row) = cantidad    'precio    'se vuelve a proteger    ActiveSheet.Protect "28021990"    'pasar a la fila sgte para seguir agregando productos a hoja NOTA    ActiveCell.Offset(1, 0).Select    'vuelvo a la hoja VER PRODUCTO    Sheets("PRODUCTOS").SelectEnd Sub

funciona excelente pero al seleccionar mi ultimo producto (ultima celda) me sale el mensaje: "ya no hay filas para ingresar productos" pero aun asi me pone el 8tavo producto en la columna F (correcto) pero brinca ala fila 25 cuando debe detenerse en la fila 24 y no sobreescribir en esa fila si ya seleccione un producto. 

1 respuesta

Respuesta
1

Te anexo la macro con los cambios

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
'Act.Por.Dante Amor
    If Intersect(Target, Columns("A")) Is Nothing Then Exit Sub
    'controla que se haya seleccionado 1 sola celda
    If Target.Count > 1 Then Exit Sub
    '
    cantidad = InputBox("Si estás seguro, captura la cantidad:", "Seleccionaste " & Range("B" & Target.Row))
    '
    If cantidad = 0 Or cantidad = "" Then Exit Sub
    Application.ScreenUpdating = False
    '
    Sheets("NUEVO SERVICIO A DOMICILIO").Select
    'si la celda activa está fuera  del rango 18:24 no se ejecuta
    If ActiveCell.Row < 18 Or ActiveCell.Row > 24 Then
        MsgBox "Ya no hay filas para ingresar productos.", , "ERROR"
        'EVALUA AQUÍ A QUÉ HOJA REGRESAR
        Sheets("PRODUCTOS").Select
        Exit Sub
    End If
    'ya estará la celda destino seleccionada
    'desprotejo
    ActiveSheet.Unprotect "28021990"
    'ActiveSheet.Range("D" & ActiveCell.Row) = Cells(Target.Row, "A")
    'clave
    ActiveSheet.Range("G" & ActiveCell.Row) = Cells(Target.Row, "B")
    'producto
    ActiveSheet.Range("L" & ActiveCell.Row) = Cells(Target.Row, "C")
    ActiveSheet.Range("F" & ActiveCell.Row) = cantidad
    'precio
    'se vuelve a proteger
    ActiveSheet.Protect "28021990"
    'pasar a la fila sgte para seguir agregando productos a hoja NOTA
    ActiveCell.Offset(1, 0).Select
    'vuelvo a la hoja VER PRODUCTO
    Sheets("PRODUCTOS").Select
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas