Cómo hacer, el valor de la celda anterior siempre sea menor que el que se vaya a ingresas en la siguiente celda, en Excel VB?.

Deseo ingresar varios valores en la columna “B4 hasta B30” en orden ascendente, que el valor de la celda anterior siempre sea menor que el que se vaya a ingresar en la celda siguiente, por ejemplo, en la columna “B4tengo el valor de 1200, si por equivocación en la celda “B5ingreso 1100, no me permita continuar y me muestre un mensaje con el valor de “B4”, por ejemplo que el mensaje diga “DEBE INGRESAR UN VALOR MAYOR QUE 1200” y solo me permita continuar cuando ingrese dicho valor mayor en "B5", así sucesivamente hasta llegar a “B30”. En Excel VB.

1 respuesta

Respuesta
1

Ingresa al Editor, selecciona con doble clic el objeto HOJA donde vayas a trabajar y allí copia esta macro:

Private Sub Worksheet_Change(ByVal Target As Range)
'x Elsamatilde
'controla lo ingresado en rango B4:B30
If Intersect(Target, [B4:B30]) Is Nothing Then Exit Sub
'si se limpia el rango o se trata de la primer celda no se controla
If Target.Count > 1 Or Target.Row = 4 Then Exit Sub
If Not IsNumeric(Target.Value) Then
    MsgBox ("Solo se permiten números")
    Target.Select
Else
    'controla que lo ingresado no sea menor a la celda anterior
    If Target.Value < Target.Offset(-1, 0) Then
        MsgBox "Debe ingresar un valor mayor a " & Target.Offset(-1, 0).Value
        Target.Select
    End If
End If
End Sub

Se controla el rango indicado y solo se permiten números.

hola no lo he podido implementar, me da error. Le quiero comentar que los datos los estoy ingresando a través de un "TextBox1", tengo un userform1 y en el tengo este textbox1 que voy ingresando directamente a la hoja2 des “B4 hasta B30”. gracias

tengo este pequeño código con el selecciono la columna y ubico la celda "b4:b30" y voy ingresando datos: Cells(uf, col.Column + 2) = TextBox1

Ah, pequeño detalle olvidaste comentar...

Este es todo el código que necesitas para este control. Establecer la fila inicial en la variable al inicio del UF y el pase en un control CommandButton (podría ser también al Exit del textbox).

Dim filx As Integer
Private Sub CommandButton1_Click()
'x Elsamatilde
'si esta vacío el control no se ejecuta
If TextBox1 = "" Then Exit Sub
'si superó la fila 30 avisa y no se ejecuta
If filx > 13 Then
    MsgBox "Ya no hay espacio para registrar este campo"
    Exit Sub
End If
'guarda dato en rango B4:B30
If filx = 4 Or Val(TextBox1) > Cells(filx - 1, "B") Then '*
    Cells(filx, "B") = Val(TextBox1)  '**
    filx = filx + 1
Else
    MsgBox "Valor incorrecto, no se guardó."
End If
TextBox1 = ""
TextBox1.SetFocus
End Sub
Private Sub UserForm_Initialize()
filx = 4
End Sub

(*) Solo se están permitiendo valores > al anterior, no comentas nada de los iguales.

(**) Se está considerando valores enteros. Si vas a utilizar decimales reemplaza VAL por CDBL en cada aparición.

Sdos!

hola, no he podido implementar ese código en este control Cells(uf, col.Column + 2) = TextBox1, ya tengo las variables lo único que necesito es el procedimiento para que al momento de ubicar el rango si el numero que ya existe en la celda es mayo, no me deje seguir y me devuelve a la posición del textbox1, claro que su código lo provee en una hoja independiente y fusiona perfectamente, pero en mi hoja no fusiona. Si es necesario valoro la respuesta y creo otra, usted me dirá?. muchas gracias   

Habrás notado cuánto cambio tuve que realizar solo por no decirme que la tarea se hacía en un textbox de un Userform... fueron 2 tareas totalmente distintas.

Ahora intentas que te pase el código solo teniendo como referencia una instrucción (Cells...+2) ... ¿cómo puedo pasarte un código que cumpla tus necesidades con solo 1 línea? Soy experta pero no maga ;)

Pasame todo tu código escrito aquí o a mi correo (aparece en la portada de mi sitio).

hola, de ante mano pido disculpas por no haber expuesto con claridad mi pregunta. es este su correo donde le debo enviar el código? [email protected] 

Si, correcto ... también puede ser el de gmail. No olvides indicarme la consulta que estamos tratando.

Sdos!

Ya te envié código ajustado a tu botón. No olvides valorar esta respuesta y dejar la otra.

Sdos!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas