Validar fechas

el poder

Board Regular
Joined
Jul 14, 2002
Messages
62
Que tal,

Tal vez parezca algo sencillo, pero no me funciona. Lo que quiero es introducir una fecha inicial y una final. Después de poner la inicial quiero que la final se valide de tal forma que sea mayor a la inicial.

He intentado con la opción de Datos->Validación:

Permitir: Fecha
Datos: Mayor que
Fecha Inicial = G4

Y excel me deja introducir cualquier fecha.

Bueno, muchas gracias por adelantado.

P.D. Perdón se me olvidaba comentar que utilizo un formato personalizado:
dddd, d mmmm aaaa y establezco la fecha con un control y no con el teclado ni enter.
 

Excel Facts

Select all contiguous cells
Pressing Ctrl+* (asterisk) will select the "current region" - all contiguous cells in all directions.
Hola,

tengo ententido que Validación no funciona cuando el valor a la celda es agregado a través de un método automático.

HTH

Benjamín
 
Upvote 0
Hola! el poder
suponiendo que quieras validar desde A1:A20 a manera de ejemplo,
selecciona desde A1:A20, da un ENTER para que se seleccione la segunda
celda (A2), ahora del menu Datos > Validacion en la lista desplegable selecciona la de hast abajo personalizada
en formula pon.

=click en A2 (escribe el signo) > click en A1
te queda asi
=A2>A1

si quieres poner mensajes ponlos y luego aceptar para salir
 
Upvote 0
No sé qué tipo de control está usando. Pero si está usando un control como Calendar Control 10.0 entonces se puede programar el control para que rechaze ciertos valores.

<font face=Courier New><SPAN style="color:#00007F">Private</SPAN> <SPAN style="color:#00007F">Sub</SPAN> Calendar1_BeforeUpdate(Cancel <SPAN style="color:#00007F">As</SPAN> <SPAN style="color:#00007F">Integer</SPAN>)
    <SPAN style="color:#00007F">If</SPAN> Calendar1.Value < [A2] <SPAN style="color:#00007F">Then</SPAN> Cancel = <SPAN style="color:#00007F">True</SPAN>
<SPAN style="color:#00007F">End</SPAN> <SPAN style="color:#00007F">Sub</SPAN></FONT>
 
Upvote 0
Muchas Gracias Greg,

Como dices, estoy usando el calendar control. Sin embargo la validación no la hago para una sola celda, sino para toda la columna.

¿Cómo podría extender tu sugerencia para validar toda la columna?

Gracias otra vez y disculpa las molestias.
 
Upvote 0
Hay que saber más sobre su situación para poder recomendar una solución. ¿Hay muchos controles de calendario vinculado a varios celdas? ¿O hay un solo control de calendario sin celda vinculado y usted poner el valor por medio de VBA? ¿El control [los controles] está[n] ubicado como objeto encima de la hoja (worksheet) o en un UserForm?
 
Upvote 0
Que tal Greg,

Perdona la tardanza. Creo que es la segunda opción. Tengo un control de calendario y pongo el valor por medio de VBA. La forma es más o menos la siguiente. Funciona seleccionando una fecha y después aprieto ACEPTAR.
Libro1
CDEFGHI
8Septiembre
9DomLunMarMiJueVieSb
1028293031123
1145678910
1211121314151617
1318192021222324
1425262728293031
152345678
16
17ACEPTARCANCELAR
Hoja1


Como introduzco una fecha anterior y otra posterior, lo ideal sería que validara que la fecha posterior. El código (que no es mío) te lo anexo:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"><html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>SAR - Seguimento de Asuntos - V2.0_UserForm2.htm</title><style type=text/css><!--
body {background-color: #ffffff; color: #000000; font-family: "Courier New"; font-size: 10pt}
.keyword {background-color: #ffffff; color: #000080}
.comment {background-color: #ffffff; color: #008000}
--></style></head><body><nobr><div></div><div></div><div><span class="keyword">Option Explicit</span></div><div><span class="keyword">Dim</span> dDate<span class="keyword">As Date</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> Calendar1_Click()</div><div></div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> CommandButton1_Click()</div><div>Calendar1 = Date</div><div>SpinButton1 = 0</div><div>SpinButton2 = 0</div><div>SpinButton3 = 0</div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> CommandButton2_Click()</div><div><span class="comment">'Place the date from the calendar into the active cell</span></div><div><span class="keyword">Dim</span> cancel<span class="keyword">As Integer</span></div><div></div><div> ActiveCell.Value = Calendar1.Value</div><div></div><div><span class="comment">'Prueba de validación de fechas</span></div><div></div><div><span class="keyword">If</span> ActiveCell.Value< [G11]<span class="keyword">Then</span> cancel =<span class="keyword">True</span></div><div></div><div></div><div><span class="comment">'Prueba de validación de fechas</span></div><div><span class="comment">'Dismiss the userform</span></div><div> Unload Me</div><div></div><div> ActiveCell.Offset(0, 1).Select</div><div></div><div><span class="comment">'ActiveCell.Offset(0, -2) = networkdays(ActiveCell.Offset(0, -3), ActiveCell.Offset(0, -1))</span></div><div><span class="comment">' ActiveCell.Offset(0, -2) = Application.Dia.lab(ActiveCell.Offset(0, -3), ActiveCell.Offset(0, -1))</span></div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> CommandButton3_Click()</div><div></div><div>Unload Me</div><div></div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> SpinButton1_Change()</div><div><span class="keyword">If</span> SpinButton1 >= -1<span class="keyword">And</span> SpinButton1 _</div><div><= 1<span class="keyword">Then</span> dDate = Calendar1</div><div>TextBox1 = SpinButton1</div><div>Calendar1 = DateAdd _</div><div>("m", TextBox1.Value, dDate)</div><div>UpdateCell</div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> SpinButton2_Change()</div><div><span class="keyword">If</span> SpinButton2 >= -1<span class="keyword">And</span> SpinButton2 _</div><div><= 1<span class="keyword">Then</span> dDate = Calendar1</div><div>TextBox2 = SpinButton2</div><div>Calendar1 = DateAdd _</div><div>("ww", TextBox2.Value, dDate)</div><div>UpdateCell</div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> SpinButton3_Change()</div><div><span class="keyword">If</span> SpinButton3 >= -1<span class="keyword">And</span> SpinButton3 _</div><div><= 1<span class="keyword">Then</span> dDate = Calendar1</div><div>TextBox3 = SpinButton3</div><div>Calendar1 = DateAdd _</div><div>("d", TextBox3.Value, dDate)</div><div>UpdateCell</div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div><span class="keyword">Private Sub</span> UpdateCell()</div><div>ActiveCell = Calendar1</div><div>ActiveCell.NumberFormat _</div><div>= "dddd, d mmmm yyyy"</div><div><span class="keyword">End Sub</span></div><hr size="1"><div></div><div></div><div><span class="keyword">Private Sub</span> UserForm_Initialize()</div><div>UserForm1.Calendar1.Value = Date</div><div><span class="keyword">End Sub</span></div><div></div><div></div><div></div></nobr></body></html>

Gracias por tu tiempo y paciencia.
 
Upvote 0
Hola poder,

Bueno, una sugerencia sería poner nombres más descriptivos usando las convenciones de Hungría. CommandButton2 debe tener un nombre como btnAceptar o btnCancelar. Los Spin Buttons deben tener nombres como spnAno, spnMes, spnDia o lo que sea. Asi como son, otro programador no tiene idea para qué son.

Bueno, si comprendo bien su situación, creo que el código para el botón de aceptar debe de ser algo parecido a:

Code:
Private Sub btnAceptar_Click()
'Place the date from the calendar into the active cell

   If Calendar1.Value >= ActiveCell.Offset(0,-1) Then
      ' Value is OK, enter into cell.
      ActiveCell = Calendar1.Value
   Else
      MsgBox "Fecha Invalida"
      ActiveCell.ClearContents
      Exit Sub                                         ' |--¿xsub?-->
   End If

   'Dismiss the userform
   Unload Me
End Sub
 
Upvote 0
Muchas Gracias Greg!

Funcionó perfectamente tu código.

Y como mencionas trataré de seguir las convenciones de Hungría.

Por cierto, traté de buscar en el google, pero no encontré algo al respecto.

Saludos y Gracias nuevamente por tu tiempo.
 
Upvote 0

Forum statistics

Threads
1,223,952
Messages
6,175,596
Members
452,657
Latest member
giadungthienduyen

We've detected that you are using an adblocker.

We have a great community of people providing Excel help here, but the hosting costs are enormous. You can help keep this site running by allowing ads on MrExcel.com.
Allow Ads at MrExcel

Which adblocker are you using?

Disable AdBlock

Follow these easy steps to disable AdBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the icon in the browser’s toolbar.
2)Click on the "Pause on this site" option.
Go back

Disable AdBlock Plus

Follow these easy steps to disable AdBlock Plus

1)Click on the icon in the browser’s toolbar.
2)Click on the toggle to disable it for "mrexcel.com".
Go back

Disable uBlock Origin

Follow these easy steps to disable uBlock Origin

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back

Disable uBlock

Follow these easy steps to disable uBlock

1)Click on the icon in the browser’s toolbar.
2)Click on the "Power" button.
3)Click on the "Refresh" button.
Go back
Back
Top