Como poner una fórmula en VBA

Tengo un formulario echo en vba me funciona ya casi todo, solo que requiero que al seleccionar un check box del formulario me ingrese una fórmula .

Lo he intentado pero me genera error de sintaxis

La fórmula me funciona bien en Excel, la fórmula que utilizo es

= Si(i14<>"",si(k14="ETOT","entregado",si(k14="CANC","cancelado",+Hoy ()-i14)),"")

Mi Excel está en español y cuando la pongo en VBA me arroja el error de sintaxis

Espero me puedan ayudar o si se puede hacer de otra manera lo que requiero es que al poner la fecha de recepción (texbox 7) me diga tomando la fecha actual cuántos días tiene que se ingreso.

El código completo es :

Private Sub CommandButton1_Click()

TextBox1.Text = ""

TextBox2.Text = ""

TextBox3.Text = ""

TextBox4.Text = ""

TextBox5.Text = ""

TextBox6.Text = ""

TextBox7.Text = ""

ComboBox1.Text = ""

TextBox1.SetFocus

End Sub

Private Sub CommandButton2_Click()

Unload Me

End Sub

Private Sub CommandButton3_Click()

Dim xfil As Integer

Range("b13").Activate

xfil = ActiveCell.CurrentRegion.Rows.Count

ActiveCell.Offset(xfil, 0) = TextBox1.Text

ActiveCell.Offset(xfil, 1) = TextBox2.Text

ActiveCell.Offset(xfil, 2) = TextBox3.Text

ActiveCell.Offset(xfil, 3) = TextBox4.Text

ActiveCell.Offset(xfil, 4) = TextBox5.Text

ActiveCell.Offset(xfil, 5) = TextBox6.Text

ActiveCell.Offset(xfil, 7) = TextBox7.Text

ActiveCell.Offset(xfil, 9) = ComboBox1.Text

Aquí  me merca el error  de sintaxis

If CheckBox1.Value = True Then

 ActiveCell.Offset(xfil, 8) = " = SI(I14 <> , "", SI(K14 = "ETOT" , "ENTREGADO" , SI(K14 = "CANC" , "CANCELADO", HOY() - I14)), "")"

Else

ActiveCell.Offset(xfil, 8) = "sin rastreo"

 End If

End Sub

Private Sub UserForm_Activate()

ComboBox1.RowSource = "estatus"

End Sub

2 Respuestas

Respuesta
1

o si se puede hacer de otra manera lo que requiero es que al poner la fecha de recepción (texbox 7) me diga tomando la fecha actual cuántos días tiene que se ingreso

No hay que complicarse con esa formula. VBA tiene una función que se llama DateDiff que lleva 3 argumentos y funciona de la siguiente manera:

DateDiff(intervalo, fecha1, fecha2)

El intervalo es, que diferencia quieres saber. Para días, usas "d", para meses "m", para años "yyyy" y hay otros intervalos que casi no se usan.

En tu caso podrías decir algo como:

ActiveCell.Offset(xfil, 8) = DateDiff("d", Me.TextBox7.Value, Now)

y listo.

Si pones la Now como segunda fecha, es para saber los días que han pasado desde una fecha anterior. Si lo pones antes, es para saber cuantos días falta para una fecha posterior. Funciona igual, solo que de una manera u otra te dará un valor positivo o negativo.

Pruebalo y nos avisas.

Andy M.

Respuesta

Prueba esto

Z = "=if(i14<>" & """""" & "," & y = "if(K14 =" & """ETOT""" & "," & """ENTREGADO""" & "," & "if(K14 =" & """CANC""" & "," & """CANCELADO""" & ",HOY() - I14)" & ")" & "," & """""" & ")"
Range("b2").Formula = Z

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas