Color combobox según dato elegido

Color combobox según dato elegido
Hola!
Tengo una consulta a ver si me puedes ayudar.
Quisiera saber si se puede dar color a un combobox según el dato que pongas:
Tengo un userform en el cual tengo un combobox:
ComboBoxPRLISO.List = Array("OK", "Pending", "Not Received", "N/A", "")
Quisiera los siguientes colores para el combobox (backcolor) según el dato:
"OK" --> Verde
"Pending" --> Rojo
"Not Received" --> Azul
"N/A" --> Blanco
"" --> Blanco
A ver si puede ser.

6 Respuestas

Respuesta
1
Si se puede :)
Tienes que programar el evento Change del ComboBox, de esta manera:
Private Sub ComboBoxPRLISO_Change()
    Select Case ComboBoxPRLISO.Text
        Case "OK"
            ComboBoxPRLISO.BackColor = vbGreen
        Case "Pending"
            ComboBoxPRLISO.BackColor = vbRed
        Case "Not Received"
            ComboBoxPRLISO.BackColor = vbBlue
        Case "N/A"
            ComboBoxPRLISO.BackColor = vbWhite
        Case Else
            ComboBoxPRLISO.BackColor = vbWhite
    End Select
Respuesta
1
Para agregar backcolor a un combobox es muy sencillo, ten en cuenta esto:
RGB(rojo, verde, azul)
Estos son los tonos que usaras para definir tus colores que van desde 0 a 255
Entonces:
Primero cargamos el combobox
Private Sub UserForm_Initialize()
ComboBoxPRLISO.List = Array("OK", "Pending", "Not Received", "N/A", "")
End Sub
luego hacemos la seleccion para cada caso de la lista
 
Private Sub ComboBoxPRLISO_Change()
Dim valor as string
valor = ComboBoxPRLISO.value
Select case valor
Case "OK"
ComboBoxPRLISO.BackColor = RGB(255, 0, 0)
Case "N/A"
ComboBoxPRLISO.BackColor = RGB(0, 255, 0)
'y asi haces con cada seleccion
End Select
End sub

Ahora ten en cuenta que por ejemplo si bajas el numero de 255 a 100 el tono del color se tornara más tenue y si combinas las cifras como por ejemplo (o, 200, 150) te mezclara los tonos y dará otro color.
Respuesta
1
Claro se puede y la instrucción es la siguiente:
With ComboBox1 'nombre del ComboBox
If escribes las condiciones a analizar Then
.BackColor = &H00008000& 'seleccionas el color de acuerdo a la tabla de colores que encuentras en propiedades,este es el color verde
End If 'puedes encadenar varias condicionesdentro del If... Then... Else...End If ó cierras el analisis e inicias uno nuevo if...
End With
Respuesta
1
En el código del combo tienes que añadir esto:
Private Sub ComboBoxPRLISO_Change()
Select Case ComboBox1.ListIndex
Case 0 ' "OK"
  ComboBox1.BackColor = &HFF00&
Case 1 ' "Pending"
  ComboBox1.BackColor = &HFF&
Case 2 ' "Not Received"
  ComboBox1.BackColor = &HFFFF00
Case Else
  ComboBox1.BackColor = &HFFFFFF
End Select
End Sub 
La selección del combo empieza en 0. Dependiendo de como lo tengas así tienes que poner cada case con su color. Puedes cambiar también los tonos.
Posiblemente ya tengas algún código asociado al cambio del combo. Si es así el select ponlo al principio o al final dependiendo de lo que tengas.
Respuesta
1
Esto te va a servir
Dale doble click a tu combobox y pégalo
Private Sub ComboBoxPRLISO_Change()
If ComboBoxPRLISO.Value = "OK" Then
ComboBoxPRLISO.BackColor = vbGreen
ElseIf ComboBoxPRLISO.Value = "Pending" Then
ComboBoxPRLISO.BackColor = vbRed
ElseIf ComboBoxPRLISO.Value = "Not Received" Then
ComboBoxPRLISO.BackColor = vbBlue
ElseIf ComboBoxPRLISO.Value = "N/A" Then
ComboBoxPRLISO.BackColor = vbWhite
ElseIf ComboBoxPRLISO.Value = "" Then
ComboBoxPRLISO.BackColor = vbWhite
End If
End Sub
Si te sirvió y no te queda otra duda finaliza la pregunta y putua.
Respuesta
1
Puedes utilizar el siguiente código:
Como son pocos valores los que necesitas es sencillo
Primero llenas el combobox al iniciar el formulario
Private Sub UserForm_Initialize()
ComboBox2.List = Array("OK", "Pending", "Not Received", "N/A", "")
End Sub
Posteriormente al seleccionar el valor de la lista iluminara el combobox con el color que se definió
Private Sub ComboBox2_Change()
valor = ComboBox2.ListIndex
Label2 = valor
If valor = 0 Then
ComboBox2.BackColor = vbGreen
Else
If valor = 1 Then
ComboBox2.BackColor = vbRed
Else
If valor = 2 Then
ComboBox2.BackColor = vbBlue
Else
ComboBox2.BackColor = vbWhite
End If
End If
End If
End Sub
Si necesitas algo adicional me lo haces saber
RNJ

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas