Visual Basic - Fecha de Vencimiento

Life is soft - evento anual de software empresarial
   
Vista:

Fecha de Vencimiento

Publicado por albert (5 intervenciones) el 03/05/2017 03:09:01
buenas amigo quisiera saber si me pueden ayudar con la correccion de un codigo en vba
soy nuevo en esto
el problema es que estoy creando un formulario en vba excel para fechas de vencimiento con solo el mes y el año,
la fecha actual cuando se compara con la fecha de vencimiento, deberia dar si el producto esta vigente o vencida
el problema es que si la fecha de vencimiento es por ejemplo:

fecha actual: 05/2017 fecha vencimiento: 06/2017 = vigente (hasta aqui esta bien)

pero cuando coloco fecha de vencimiento: 01/2018 deberia dar = vigente pero asume el mes actual y lo declara = vencido, esto me imagino porque esta por debajo del mes de fecha actual, se que mi codigo esta mal declarado a ver si puedes darme una ayuda, te envio los codigos:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
Private Sub UserForm_Initialize()
    Me.TextBox2 = Format(Now(), "mm/yyyy")
    Me.TextBox2.Enabled = False
    Me.TextBox3.Enabled = False
End Sub
 
Private Sub TextBox1_Change()
    Sheets("hoja3").Select
    Range("b5").Select
    ActiveCell.FormulaR1C1 = TextBox1
    Select Case Len(TextBox1.Value)
    Case 2
        TextBox1.Value = TextBox1.Value & "/20"
    End Select
End Sub
 
 
Private Sub CommandButton1_Click()
If Me.TextBox1 >= Me.TextBox2 Then
    Me.TextBox3 = "Vigente"
Else
    Me.TextBox3 = "Vencida"
End If
    Selection.EntireRow.Insert
    TextBox1 = Empty
    TextBox3 = Empty
    TextBox1.SetFocus
End Sub
 
 
Private Sub TextBox3_Change()
    Sheets("hoja3").Select
    Range("c5").Select
    ActiveCell.FormulaR1C1 = TextBox3
End Sub
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana

Fecha de Vencimiento

Publicado por Antoni Masana (283 intervenciones) el 03/05/2017 10:34:19
El problema es que estas comparando un string y los dos primeros caracteres (mes) tienen menos peso que los cuatro últimos (año)

La comparación debería ser YYYY/MM >= YYYY/MM .

Es decir a la hora de comparar debes invertir el mes y el año

1
2
3
4
5
6
7
8
c_Box1 = Right$(Me.TextBox1, 4) + Left$(Me.TextBox1,2)
c_Box2 = Right$(Me.TextBox2, 4) + Leff$(Me.TextBox2,2)
 
if c_Box1 >= c_Box2 Then
    Me.TextBox3 = "Vigente"
Else
    Me.TextBox3 = "Vencida"
End If


o pasarlo a meses:

1
2
3
4
5
6
7
8
n_Box1 = (val(Right$(Me.TextBox1, 4)) * 12) + Val(left$(Me.TextBox1,2))
n_Box2 = (val(Right$(Me.TextBox2, 4)) * 12) + Val(left$(Me.TextBox2,2))
 
if n_Box1 >= n_Box2 Then
    Me.TextBox3 = "Vigente"
Else
    Me.TextBox3 = "Vencida"
End If

Saaludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
3
Comentar

Fecha de Vencimiento

Publicado por albert (5 intervenciones) el 04/05/2017 00:32:26
Estimado amigo mil puntos de valoracion para usted, esa era la falla muchas gracias
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Fecha de Vencimiento

Publicado por albert (5 intervenciones) el 06/05/2017 15:11:16
Otra pregunta y disculpe como podría ademas darle a la "CELDA" el color de relleno específico a cada caso, con un código desde el formulario, es decir
si "vigente" darle color verde ó "vencida" un color rojo, gracias de antemano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Revisar política de publicidad