Pasar valor de un combo a un textbox

Tengo un combobox donde quiero que me despliegue una lista de materiales y al elegir uno quiero que en un textbox me aparezca su valor asociado. Mi pregunta es ¿cómo declarar las variables para que en el textbox me aparezca el valor sin redondear?

3 Respuestas

Respuesta
1
Si declaras una variable numérica como Integer (INT) te redondeara el valor.
Lo mejor es declararlas como Long, Double o Currency aunque normalmente uso Double.
Luego define el formato en las propiedades del TextBox y debería irte bien.
Cierto tenia la variable como integer pero ya la cambie a double y no me funciona, mira este es el código tal vez tengo otra cosa mal, por favor checalo
Private Type Mitipo
  densidad As Double
  material As String
End Type
Private Sub Form_Load()
  Dim arreglo(1 To 14) As Mitipo
arreglo(1).densidad = 2.7
arreglo(1).material = "ALUM6062"
arreglo(2).densidad = 8
arreglo(2).material = "SS 304-316"
arreglo(3).densidad = 7.8
arreglo(3).material = "SS 416-446"
arreglo(4).densidad = 7.87
arreglo(4).material = "A1215"
arreglo(5).densidad = 7.87
arreglo(5).material = "12L14"
arreglo(6).densidad = 7.85
arreglo(6).material = "A1144"
arreglo(7).densidad = 7.87
arreglo(7).material = "AISI1020"
arreglo(8).densidad = 7.85
arreglo(8).material = "AISI4140"
arreglo(9).densidad = 8.82
arreglo(9).material = "SAE 40"
arreglo(10).densidad = 2.16
arreglo(10).material = "TEFLON"
arreglo(11).densidad = 0.093
arreglo(11).material = "UHMW-PE"
arreglo(12).densidad = 1.41
arreglo(12).material = "ACETAL DELRIN"
arreglo(13).densidad = 8.36
arreglo(13).material = "KOVAR"
arreglo(14).densidad = 8.3
arreglo(14).material = "KANTHAL"
Dim i As Integer
  For i = 1 To 14
  Combo1.AddItem arreglo(i).material
  Combo1.ItemData(i - 1) = arreglo(i).densidad
Next
End Sub
Private Sub Combo1_Click()
  Text13 = Combo1.ItemData(Combo1.ListIndex)
End Sub
Y el el textbox no le tengo ningún formato
Si estás poniendo el valor directamente con decimales. Te van a aparecer decimales.
Densidad está definido como double.
Así te van a salir decimales siempre.
Incluye Otro valor DensdRedondeada as integer
y dalr valor
arrreglo(i). DensdRedondeada=Cint(arreglo(i). Densidad
Y luego usalo en la combo.
Combo. 1additem (arreglo(i). Densdredondeada)
Así tienes siempre disponibles los 3 valores.
Respuesta
1
Me pasarías un ejemplo bien simple de los valores que manejas
Así tengo el código hasta ahora pero me da los valores redondeados en el textbox, siente libre de modificar todo el código, si hay otra forma de asociar valores en un combobox por favor dímela
Private Type Mitipo
densidad As Double
material As String
End Type
Private Sub Form_Load()
Dim arreglo(1 To 3) As Mitipo
arreglo(1).densidad = 2.7
arreglo(1).material = "ALUM6062"
arreglo(2).densidad = 8
arreglo(2).material = "SS 304-316"
arreglo(3).densidad = 7.8
arreglo(3).material = "SS 416-446"
arreglo(4).densidad = 7.87
Dim i As Integer
For i = 1 To 3
Combo1.AddItem arreglo(i).material
Combo1.ItemData(i - 1) = arreglo(i).densidad
Next
End Sub
Private Sub Combo1_Click()
Text13 = Combo1.ItemData(Combo1.ListIndex)
End Sub
No es problema del combo, tienes que formatear el numero
proba esto text13 = int(combo1. Itemdata(combo1. Listindex))
Sino también con
text13 = round(combo1.itemdata(combo1.listindex),0)
Respuesta
Bueno una vez llenado tu combo, y suponiendo que el combo guardo la información no redondeada (eso ya locomprobaste, tendrías que revisar) y posteriormente en el texbox pondrías.
text1.text= format(combo1.value,"###,##0.00")  esto no te redondea solo lo corta.
Suerte y no dudes en consultar.
Así como lo pusiste me marca un error en value, pero mejor te pongo el código que tengo tal vez sea otra cosa que no he visto
Private Type Mitipo
densidad As Double
material As String
End Type
Private Sub Form_Load()
Dim arreglo(1 To 14) As Mitipo
arreglo(1).densidad = 2.7
arreglo(1).material = "ALUM6062"
arreglo(2).densidad = 8
arreglo(2).material = "SS 304-316"
arreglo(3).densidad = 7.8
arreglo(3).material = "SS 416-446"
arreglo(4).densidad = 7.87
arreglo(4).material = "A1215"
arreglo(5).densidad = 7.87
arreglo(5).material = "12L14"
arreglo(6).densidad = 7.85
arreglo(6).material = "A1144"
arreglo(7).densidad = 7.87
arreglo(7).material = "AISI1020"
arreglo(8).densidad = 7.85
arreglo(8).material = "AISI4140"
arreglo(9).densidad = 8.82
arreglo(9).material = "SAE 40"
arreglo(10).densidad = 2.16
arreglo(10).material = "TEFLON"
arreglo(11).densidad = 0.093
arreglo(11).material = "UHMW-PE"
arreglo(12).densidad = 1.41
arreglo(12).material = "ACETAL DELRIN"
arreglo(13).densidad = 8.36
arreglo(13).material = "KOVAR"
arreglo(14).densidad = 8.3
arreglo(14).material = "KANTHAL"
Dim i As Integer
For i = 1 To 14
Combo1.AddItem arreglo(i).material
Combo1.ItemData(i - 1) = arreglo(i).densidad
Next
End Sub
Private Sub Combo1_Click()
Text13 = Combo1.ItemData(Combo1.ListIndex)
End Sub
Haber el problema debe estar en el tipo de datos
integer, para números enteros
Currency, para calculo de tipo monetario y cálculos de punto fijo
y un sin fin de tipos de datos..
Densidad as double -- aquí esta el error
suerte y no dudes en consultar

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas