Validar ingreso consecutivo de fechas mediante un textbox

¿Cómo puedo validar el ingreso consecutivo de fechas? O ¿Qué podría hacer para que se ordene automáticamente las fechas en la base de datos? Hago estas preguntas porque el usuario a veces olvida registrar los datos del dia, registrando otra fecha no consecutiva a la anterior y al percatarse de eso registra los datos ya pasados formando un desorden en la base de datos.

1 respuesta

Respuesta
1

Mencionas un textbox. Tienes un textbox en la hoja o en un userform.

Si es en un userform, entonces todos los datos deberán ingresarse desde el form, realizar las validaciones de datos, incluyendo por supuesto el de la fecha. De hecho, si la captura es diaria, entonces el usuario no debería capturar la fecha, la macro que ponga la fecha del día en el form, pero solamente visible, cuando el usuario presione un botón "Registrar", entonces que la macro ponga la fecha en la hoja.

Necesito saber cuál es tu idea para capturar los datos y en base a eso construirte una solución.

Hola Dante...

En un formulario tengo varios textbox FECHA, DÍA, HORA, RESPONSABLE Y TURNO además de otros textbox, al dar click en el botón guardar me asigna los valores de los textbox en la base de datos. Esta información se va guardando de arriba hacia abajo a medida que voy ingresando una fecha en orden consecutivo pero este orden se pierde cuando un usuario olvida ingresar los datos correspondientes del día, luego viene otro usuario al día siguiente e ingresa sus datos correspondientes entonces queda un día vacío y así sucesivamente. Cuando se ingresan los datos del día faltante se guardan en la ultima fila y se pierde el orden consecutivo

¿Todos los días se debe capturar información?

Espero que puedas ser más gráfico, explicando con ejemplos la secuencia de lo que sucede.

Voy a tratar de explicar con ejemplos lo que tienes

El día 15 nov, usuario1 captura datos

El día 16 nov, olvidaron capturar datos

El día 17 nov, capturan los datos del 16 nov.

Pregunta 1, cómo saber si están capturando los datos del 16nov o los datos propios del 17 nov.

Pregunta 2, si el último día capturado (15 nov) no es igual al día de hoy (17 nov), entonces la macro que le ponga automáticamente 16 nov y registre los datos.

Pregunta 3, si la macro le pone 16 nov, qué pasa con los registros del 17 nov, también les va a poner 16 o en qué momento sabemos que son 17nov

Todas son suposiciones, realmente el que conoce la operación y me la debe explicar eres tú. Si puedes explicar paso a paso lo que tienes y en qué momento deseas algo automático.

Todos los días se toman los datos así: 

Ellos se guardan por fecha así:

Como puedes apreciar están ordenados hasta la fecha 13/10/2017, el dato que vendría seria la fecha 14/10, pero resulta que el usuario no cargo los datos porque se le olvido. Al día siguiente seria 15/10  y el usuario cargo los de datos correspondientes SIN PERCATARSE QUE FALTABA EL DÍA 14/10/2017.

13/10/2017        Viernes

15/10/2017       Domingo

Ahora bien, si el usuario LUEGO DE GUARDAR los datos del día 15/10/2017 se fija que faltan los del día anterior procede a cargarlos, quedando:

13/10/2017      Viernes

15/10/2017       Domingo

14/10/2017       Sabado

Entonces no se guarda en orden sino en la ultima fila de la base de datos. Quisiera que se ordenara de forma automática ya que en ocasiones  para ingresar esos datos faltantes debo hacerlo directamente de la base de datos (hoja excel) y no del userform para poder mantener la continuidad de las fechas.

Después de pasar los datos a la hoja, ordena los datos en la hoja por la columna de la fecha.

Para ordenar los datos en la hoja, necesito:

- El nombre de la hoja

- En qué fila están los encabezados

- En qué fila empiezan los datos

- En qué columna está la fecha

- Columna inicial y final de la hoja.

Te anexo el código y lo adaptas

Sub Macro6()
'
' Macro6 Macro
'
'
    hoja = "Datos"  'nombre hoja
    col = "B"       'columna de fecha
    ini = "A"       'columna inicial
    fin = "E"       'columna final
    f1 = 1          'fila encabezado
    f2 = 2          'fila inicial de datos
    '
    Set h = Sheets(hoja)
    u = h.Range(col & Rows.Count).End(xlUp).Row
    With h.Sort
        .SortFields.Clear
        .SortFields.Add Key:=h.Range(h.Cells(f2, col), h.Cells(u, col)), _
            SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
        .SetRange h.Range(h.Cells(f1, ini), h.Cells(u, fin))
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End Sub

.

'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

.

Avísame cualquier duda

.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas