Macro para no duplicar registros de fecha y hora

Estoy generando un archivo de eventos en el que quiero hacer una macro para que antes de registrar en la base de datos ya se sepa que horarios se pueden tener de esa fecha por favor les agradezco el apoyo de antemano

Respuesta
1

Podrías poner ejemplos de lo que capturas, en dónde lo capturas, o cómo quieres capturarlo.

Explica lo que necesitas con datos de ejemplo reales.

SI dante muchas gracias

Mira registro así

Y esta es mi base de datos

Como te decía quiero saber como hacer para que antes de que registre sepa que el horario de la fecha del evento no esta disponible

Ya entendí, tienes un formulario, capturas la información, presionas "Registrar" y te pasa los datos a tu hoja.

Ahora explícame, a qué te refieres con "antes de que registre sepa que el horario de la fecha del evento no esta disponible"

Explícame con un ejemplo, es decir, la información de cuál o de cuáles de los textbox se debe comparar contra cuál o cuáles celdas, cuál es la condición, o condiciones, todo explicado con un ejemplo.

Si la text box C7 (Fecha de Show) y la text box C8 (Hora de Show) , los rangos de las donde estan los datos a comparar son  en la Hoja Archivo: Fecha de Show (H2:H700) y Hora de Show (i2:i700) 

lo que quiero es saber  antes de pulsar registrar o al pulsarlo me diga que el horario que seleccione en esa fecha no esta disponible

Es decir, en el textbox7 pongo la fecha 20/ene/2015 y en el textbox8 pongo la hoja "10:00 am", ¿esos datos los busco en cuáles columnas?

Puedes poner el ejemplo con datos, yo ya puse la fecha 20/ene/2015, esa fecha la busco y si la encuentro, ¿qué?

O envíame tu archivo con el formulario y me explicas con un ejemplo, pero dime datos en el ejemplo: fecha, hora, ¿y si la encuentro qué hago?' y si no la encuentro qué hago?

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario "Francisco Garcia" y el título de esta pregunta.

ya envié el correo Dante

El éxito de la búsqueda depende de que los datos, fecha y hora sean correctamente ingresados, como la fecha la ingresas con un dtpicker, no hay problema, pero la hora en un textbox, no es conveniente así que cambie el textbox por un combo y le agregué las horas disponibles desde las 00:00 horas hasta las 23:30 horas, con un intervalo de media hora; también agregué otros controles a la captura de la hora para que sea una hora válida.

Si la fecha y la hora ya existen te envía un mensaje y no te deja registrar los datos.

Te anexo el código del formulario

Private Sub Registrar_Click()
'Por.Dante Amor
    If C3 = "" Or C4 = "" Or C5 = "" Or C6 = "" Or C7 = "" Or C8 = "" Or C9 = "" Then
        MsgBox "Faltan datos", vbExclamation
    Else
        Set h1 = Sheets("Archivo")
        Set b = h1.Columns("H").Find(C7.Value, lookat:=xlWhole, LookIn:=xlFormulas)
        If Not b Is Nothing Then
            celda = b.Address
            hora = TimeValue(C8)
            Do
                If h1.Cells(b.Row, "I") = hora Then
                    existe = True
                    Exit Do
                End If
                Set b = h1.Columns("H").FindNext(b)
            Loop While Not b Is Nothing And b.Address <> celda
            If existe Then
                MsgBox "Ya existe un evento en esa fecha y a esa hora", vbExclamation, "REGISTRAR EVENTOS"
            Else
                u = h1.Range("B" & Rows.Count).End(xlUp).Row + 1
                h1.Cells(u, "B") = C1
                h1.Cells(u, "C") = C2
                h1.Cells(u, "D") = C3
                h1.Cells(u, "E") = C4
                h1.Cells(u, "F") = C5
                h1.Cells(u, "G") = C6
                h1.Cells(u, "H") = C7
                h1.Cells(u, "I") = C8
                h1.Cells(u, "J") = C9
                h1.Cells(u, "K") = C10
                h1.Cells(u, "L") = C11
                MsgBox "Evento registrado", vbInformation, "REGISTRAR EVENTOS"
            End If
        End If
    End If
End Sub
'
Private Sub C8_DropButtonClick()
'Por.Dante Amor
    C8 = Replace(C8, ",", ".")
    C8 = Format(Val(C8), "hh:mm")
End Sub
'
Private Sub C8_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
    KeyAscii = 0
End Sub
'
Private Sub UserForm_Activate()
    C5.RowSource = "Datos!A2:A120"
    C8.RowSource = "Datos!E2:E49"
    C9.RowSource = "Datos!C2:C120"
End Sub
'
Private Sub Cancelar_Click()
    Unload Me
End Sub

Saludos.Dante Amor

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas