¿Por qué los datos de un textbox de un formulario pasan a la hoja excel con formato texto?.

Tengo un formulario que traslada los datos (en una suposición porque ya no estoy seguro de nada), a una hoja excel colocándose los datos donde corresponde. La cuestión es que por las fórmulas que tiene la hoja, los datos deben ser numéricos pero por la información que aparece los datos pasan a ser de texto.

Debo decir que para dejar el formulario un poco vistoso, he introducido formato en alguno de los textbox, pero por lo que parece solamente me causa problemas, tanto en las fórmulas que se realizan en la instrucción como en la hoja de cálculo una vez aparecen los datos reflejados. Un ejemplo es el siguiente:

Private Sub TextNroTitul_Change()

' Con esto trato de que los nros tengan formato de miles

 Me.TextNroTitul = Format(Me.TextNroTitul, "#,###")

End Sub

''''' en otro procedimiento tengo la siguiente sentencia
Private Sub TextPrecio_Change()

If Combo_C_V = "COMPRA" Then
TextTGtos = ((TextNroTitul * TextPrecio) * TextPorc / 100 + (TextNroTitul * TextPrecio) * TextC_Banq / 100) + TextCanon
 TextTGtos = Format((TextTGtos), "#,###.##")
TextTotCoste = (TextNroTitul * TextPrecio) + TextTGtos
' TextTotCoste = Format((TextTotCoste), "#,###.##")
TextResul_Vta = 0

ElseIf Combo_C_V = "VENTA" Then

TextTotCoste = 0
TextTGtos = ((TextNroTitul * TextPrecio) * TextPorc / 100 + (TextNroTitul * TextPrecio) * TextC_Banq / 100) - TextCanon

TextResul_Vta = (TextNroTitul * TextPrecio) + TextTGtos
' TextResul_Vta = Format((TextResul_Vta), "#,###.##")

End If

Es evidente de que no tengo idea de nada pero si me podéis echar una mano os lo agradecería.

Respuesta
1

Si el textbox tiene formato, puedes utilizar la función CDbl para convertir el texto a valor numérico:

Private Sub TextPrecio_Change()
  If Combo_C_V = "COMPRA" Then
    TextTGtos = ((TextNroTitul * TextPrecio) * TextPorc / 100 + _
                 (TextNroTitul * TextPrecio) * TextC_Banq / 100) + TextCanon
    TextTGtos = Format((TextTGtos), "#,###.##")
    TextTotCoste = (TextNroTitul * TextPrecio) + CDbl(TextTGtos)
  End If
End Sub

Igualmente para pasar el dato a la celda utilizas CDbl, ejemplo:

Private Sub CommandButton1_Click()
  Range("B5").Value = CDbl(TextTGtos)
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas