No repetir fechas

Hola tavopz, para comenzar soy principiante en vba, tengo hecho un userform para insertar datos con un commandbutton, la rutina es esta...
Private Sub CommandButton1_Click()
If TextBox1.Value = "" Or TextBox2.Value = "" Or TextBox3.Value = "" Or TextBox4.Value = "" _
Or TextBox5.Value = "" Or TextBox6.Value = "" Or TextBox7.Value = "" Or TextBox8.Value = "" _
Or TextBox9.Value = "" Or TextBox11.Value = "" Or ComboBox1.Value = "" Then
MsgBox ("Por favor, introduce los datos que faltan")
Exit Sub
Else
r = ComboBox1.Value
ultima = Sheets(r).[B65000].End(xlUp).Row + 1
Sheets(r).Cells(ultima, 1) = Format(TextBox1.Value, "mm/dd/yyyy")
Sheets(r).Cells(ultima, 2) = TextBox2.Value
Sheets(r).Cells(ultima, 5) = TextBox3.Value
Sheets(r).Cells(ultima, 8) = TextBox4.Value
Sheets(r).Cells(ultima, 11) = TextBox5.Value
Sheets(r).Cells(ultima, 14) = TextBox6.Value
Sheets(r).Cells(ultima, 17) = TextBox7.Value
Sheets(r).Cells(ultima, 20) = TextBox8.Value
Sheets(r).Cells(ultima, 23) = TextBox9.Value
Sheets(r).Cells(ultima, 26) = TextBox10.Value
Sheets(r).Cells(ultima, 29) = TextBox11.Value
ComboBox1.Value = Empty
TextBox1.Value = Empty
TextBox2.Value = Empty
TextBox3.Value = Empty
TextBox4.Value = Empty
TextBox5.Value = Empty
TextBox6.Value = Empty
TextBox7.Value = Empty
TextBox8.Value = Empty
TextBox9.Value = Empty
TextBox10.Value = Empty
TextBox11.Value = Empty
ComboBox1.SetFocus
End If
End Sub
En el userform lo primero que pongo es la fecha, y después de un listbox elijo el repartidor al que le voy a anotar lo realizado en el día, lo que quisiera saber es si yo meto por decir hoy un dato con fecha 07/05/08 que ya no me vuelva a permitir meter un dato con esa fecha, y que me arroje un mensaje diciendo algo. Espero haberme explicado, muchísimas gracias de antemano.
Respuesta
1
Pienso que deberías agregar un código en el evento Change del ComboBox, para que valide si la fecha ingresada se encuentra ya asignada.
Es decir, cuando se ingrese la fecha, se ejecutará el evento Change, entonces tomarás este valor y lo compararás contra todos los datos que ya se han ingresado (puede ser con un ciclo For), luego, si hay alguna coincidencia se mostrará un mensaje y se devolverá al usuario al Combo.
Sobre el código que pegué anteriormente me podrías decir que tengo que hacer por favor, como ya dije soy nuevo y la verdad me cuesta un poco, necesito ir paso a paso y ni te cuento lo que me costo llegar a hacer el código que te pegué, muchísimas gracias de antemano!
Pero pienso que el código no sería sobre el botón, sino sobre el Combobox, pues sería más oportuno que cuando ya se va a pulsar el botón para terminar. Sería algo así:
Private Sub ComboBox1_Change()
    Dim w As Worksheet
    Dim i As Range
    Set w = Sheets("Hoja1")
    For Each i In w.Range("A1:A100")
        If i.Value = ComboBox1.Value Then
            MsgBox ("La fecha ya existe")
            ComboBox1.SetFocus
        End If
    Next i
End Sub

Ten en cuenta que debes cambiar el rango "A1:A100" por el rango donde se encuentran las fechas que estás agregando.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas