Como usar una condición que valide una fecha con el nombre del mes de esa misma fecha
Yo de nuevo
En esta oportunidad amigo necesito que me ayudes con una validación en un formulario, la situación es esta en mi formulario al inicio del mismo tengo dos ComboBox en los que ingreso los nombre de meses del año, toda la información de este formulario se copia en una hoja llamada BASE DE DATOS y una de las condiciones para que esta se ejecute es que los dos ComboBox deben contener la misma información es decir el mismo mes en cada uno ej. Combobox1=enero y Combobox2=enero, esto se ejecuta muy bien si esta condición se cumple luego pasa a otra condición en la que en un TextBox se ingresa un numero de referencia de un doc. Y si este no existe en la base de datos la información se copia (dicho sea de paso esta instrucción me la proporcionaste hace un buen tiempo y me ha ayudado mucho), todo esto funciona muy bien y no hay ningún problema, ahora el problema lo tengo en que en el formulario también tengo un TextBox en el que ingreso una fecha (25/01/2015) y necesito que esta fecha se valide de alguna manera con los datos ingresados en los ComboBox es decir que si los datos de los ComboBox ambos tienen enero por ejemplo y la fecha del TextBox es 13/02/2015 no me permita copiar los datos a la hoja Base de Datos y me muestre un mensaje en donde me diga que fecha no coincide con los meses, ya que de esta hoja (Base de Datos) genero reportes mensuales y los filtro ya sea por nombre de mes o por fecha especifica y si el formulario me permite ingresar meses enero y fecha de febrero no podría determinar cual es el dato correcto si el mes o la fecha.
Le he dado mil vueltas a mi cabeza con lo poco que se en este tema y no tengo idea de como escribir la instrucción ni donde colocarla espero que me puedas ayudar, te dejo el código que tengo en el CommandButton1 que es que utilizo como instrucción primaria del formulario de antemano mil gracias por tu ayuda
Private Sub CommandButton1_Click()
'Identifica la ultima fila en la hoja Base de Datos
uf = ActiveWorkbook.Sheets("Base de Datos").Range("A" & Rows.Count).End(xlUp).Row
'Declara la variable error en caso de deposito repetido
DepErr = 0
'Determina si los meses coinciden
If Mes_Proceso <> Mes_Registro Then
MsgBox "Los Meses No Coinciden !!!, Por Favor Verifique los Datos Ingresado.", vbInformation + vbOKOnly
Mes_Proceso = Empty
Mes_Registro = Empty
Mes_Proceso.SetFocus
Else
'busca el numero de deposito si ya existe
depo = No_Referencia
Set R = Sheets("Base de Datos").Range("H4:H" & uf)
Set b = R.Find(depo)
If Not b Is Nothing Then
ncell = b.Address
Do: Set b = R.FindNext(b)
If depo = b Then DepErr = 1
Loop While Not b Is Nothing And b.Address <> ncell
End If
'Si Deposito ya existe
If DepErr = 1 Then
MsgBox "Deposito ya Existe !!!, Este Deposito Ya Fue Registrado, Por Favor Verifique El Numero Ingresado", vbInformation + vbOKOnly
No_Referencia = Empty
No_Referencia.SetFocus
Else
'Si Deposito no Existe muestra y desprotege la hoja Base de Datos que es donde se copiaran los datos del formulario
Sheets("Base de Datos").Visible = True
Sheets("Base de Datos").Unprotect "Betankool"
'Inserta una fila donde se copiaran los datos del formulario
Sheets("Base de Datos").Cells(4, 1).EntireRow.Insert
'Copia las fórmulas a la fila insertada en el rango especifico
Sheets("Base de Datos").Select
Range("K5:U5").Select
Selection.Copy
Range("K4").Select
Selection.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Selection.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, _
SkipBlanks:=False, Transpose:=False
Application.CutCopyMode = False
Range("K4").Select
'Copia los datos del formulario a la base de datos
Sheets("Base de Datos").Cells(4, 1) = Mes_Proceso
Sheets("Base de Datos").Cells(4, 2) = Mes_Registro
If Fecha_Depo <> "" Then Sheets("Base de Datos").Cells(4, 3) = CDate(Fecha_Depo) '(*)
Sheets("Base de Datos").Cells(4, 4) = Tipo_Servicio
Sheets("Base de Datos").Cells(4, 5) = Cta_Banco
If Vl_Depo <> "" Then Sheets("Base de Datos").Cells(4, 6) = CDbl(Vl_Depo) '**
Sheets("Base de Datos").Cells(4, 7) = Gestor_Cobro
Sheets("Base de Datos").Cells(4, 8) = No_Referencia
If Vl_Corte <> "" Then Sheets("Base de Datos").Cells(4, 9) = CDbl(Vl_Corte)
'Ordenar la tabla por fecha
Sheets("Base de Datos").Range("Tabla1[[Mes Ingreso]:[Valor del Corte]]").Select
ActiveWorkbook.Worksheets("Base de Datos").ListObjects("Tabla1").Sort. _
SortFields.Clear
ActiveWorkbook.Worksheets("Base de Datos").ListObjects("Tabla1").Sort. _
SortFields.Add Key:=Range("Tabla1[Fecha del Depo.]"), SortOn:= _
xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Base de Datos").ListObjects("Tabla1").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Sheets("Base de Datos").Range("Tabla1[Mes Ingreso]").Select
'Limpiar Formulario
corte = 0: depo = 0
Mes_Proceso = Empty
Mes_Registro = Empty
Tipo_Servicio = Empty
Cta_Banco = Empty
Gestor_Cobro = Empty
Fecha_Depo = Empty
Vl_Depo = Empty
No_Referencia = Empty
Vl_Corte = Empty
Lb_Diferencia.Caption = ""
'Ubica el cursor en el primer dato a ingresar
Mes_Proceso.SetFocus
'Actualiza y salva el Libro
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
End If
End If
'selecciona la página principal actualiza, salva, protege y oculta la hoja base de datos
Sheets("Principal").Select
ActiveWorkbook.RefreshAll
ActiveWorkbook.Save
Sheets("Base de Datos").Protect "Betankool"
Sheets("Base de Datos").Visible = False
End Sub
P.D.
En el caso que la fecha del TextBox no coincida con los ComboBox que se limpie el TextBox y el curso se ubique en el TextBox de la fecha para corregir la misma