VBA Excel - Problemas con el registro de una fecha de un formulario a una celda de Excel

Gracias por su apoyo en mis dudas respecto a la programación Macro, sin embargo tengo un problema con el reconocimiento de un dato ingresado por un formulario en una fórmula de Excel. Mi formulario al tener los datos listos, no solo graba los datos de los Textbox, sino agrega fórmulas correspondientes a 2 celdas que están ligadas a una celda con una fecha (que es ingresada de la fecha que contenga en el TextBox9 de mi formulario) pero que no realizan la fórmula y me sale #¡VALOR!, si esa fecha ingresada en mi formulario la vuelvo a tipear sin cambiar formato ni nada, sí acepta la formulación y lanza un resultado.

Podría pensar que es por el formato conque lo graba, pero el problema es el mismo número que es ingresado en sí.

Dato:

He testeado posibilidades, si sumo uno a esa cantidad sale un resultado correcto pero la fórmula "=SI(I28="Estable","ESTABLE", INDICE(J28:AE28, 1, CONTAR(J28:AE28)))" solo reconoce la primera entrada y la segunda que es el dato anterior +1 no (que lo correcto es que debería mostrar este segundo). En el mismo caso en la primera celda re escribí la misma fecha sin cambiar nada en dicha celda y la fórmula funcionó mostrándome la segunda fecha (que es la primera +1). Cabe mencionar que el formato con que ingresa el formulario a la celda es formato Fecha.

Adjunto los códigos relacionados a dicho Textbox9 (donde se ingresa el dato de fecha, en ese TextBox no he puesto ningún formato excepto cambiar de tamaño):

Private Sub CommandButton1_Click()
Dim emptyRow As Long
Sheets("MatrizMod").Select
emptyRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Cells(emptyRow, 1).Value = TextBox1.Value
(...)
Cells(emptyRow, 7).FormulaR1C1 = "=IF(RC[+2]=""Estable"",""ESTABLE"",INDEX(RC[+3]:RC[+24],1,COUNT(RC[+3]:RC[+24])))"
'INDEX(RC[+3]:RC[+24] donde RC[+3] es la celda donde se coloca el dato de la fecha y en esa celda se da error.
If OptionButton1.Value = True Then
Cells(emptyRow, 9).Value = OptionButton1.Caption
Cells(emptyRow, 10).Value = TextBox9.Value
Else
Cells(emptyRow, 9).Value = "Estable"
Cells(emptyRow, 10).Value = "ESTABLE"
End If
End Sub
Private Sub OptionButton1_Click()
If Me.OptionButton1 Then
(...)
TextBox9.Enabled = True
End If
Dim lngWhite As Long
lngWhite = RGB(255, 255, 255)
If TextBox4.Enabled = True Then 
(...)
TextBox9.BackColor = lngWhite
End If
End Sub
Private Sub OptionButton2_Click()
If OptionButton2 = True Then
TextBox9.Enabled = False
ComboBox2.Value = "A Plazo Indeterminado"
(...)
TextBox9.Value = ""
End If
Dim lngGray As Long
lngGray = RGB(216, 208, 200)
TextBox9.BackColor = lngGray
End If
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
(...)
If IsNumeric(TextBox5) Then
TextBox9 = DateAdd("d", MesesRenovar, InicioContrato)
FinContrato = DateValue(TextBox9)
End If
End Sub

1 respuesta

Respuesta
1

Los controles 'textbox' guardan su contenido como texto, por eso si observas en la imagen en la última fila la fecha aparece en margen izquierdo como un texto.

Cuando se trata de fechas debes pasar el textbox con una función llamada CDate:

Cells(emptyRow, 10).Value = CDate(TextBox9.Value)

Sdos.

Elsa

* Todo lo que necesitas saber sobre TextBox lo encontrarás en cap 7 del manual de Userforms

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas