Como hacer un Label sea visible tras registrar todos los combobox

A ver si alguien me puede decir como puedo hacer que un label con un texto determinado que lo he puesto no visible en propiedades del mismo, aparezca visible al cumplimentarse todos los combobox que tengo en un formulario de excel.
Este Label debería unir el texto determinado y el valor resultado de una fórmula que tengo en la columna N de la hoja1, para que se muestre en el formulario.
A modo de ejemplo, en la celda N2 el resultado de la fórmula es ALTO, por lo que el Label debería aparecer el texto determinado y Alto
En la celda N3 el resultado de la fórmula es MEDIO, por lo que el Label debería aparecer el texto determinado y Medio,
En la celda N4 el resultado es BAJO, por lo que el Label debería ser visible con el texto determinado y Bajo
Es decir, que hay tres resultados posibles (bajo, medio y alto), por lo que el Label debería aparecer visible con un texto determinado como EL RESULTADO DE LA MEDICIÓN ES... MEDIO.
Espero que alguien me pueda ayudar

Sub CommandButton1_Click()  'para Registrar
Sheets("Hoja1").Select
If ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Or ComboBox4 = "" Then
MsgBox "Falta algún campo por cumplimentar", vbInformation, "Error de captura"
Else
Range("A" & Cells.Rows.Count).End(xlUp).Offset(1).Select
ActiveCell = ComboBox1.Value
ActiveCell.Offset(0, 1) = ComboBox2.Value
ActiveCell.Offset(0, 2) = ComboBox3.Value
ActiveCell.Offset(0, 3) = ComboBox4.Value
MsgBox "Los datos se han registrado correctamente", vbOKOnly, "Registro"
'limpio los datos
ComboBox1 = ""
ComboBox2 = ""
ComboBox3 = ""
ComboBox4 = ""
End If
End Sub
Private Sub UserForm_Initialize()
With ComboBox1
. AddItem "1"
. AddItem "2"
. AddItem "3"
. AddItem "4"
. AddItem "5"
. AddItem "6"
. AddItem "7"
. AddItem "8"
. AddItem "9"
. AddItem "0"
End With
With ComboBox2
. AddItem "1"
. AddItem "2"
. AddItem "3"
. AddItem "4"
. AddItem "5"
. AddItem "6"
. AddItem "7"
. AddItem "8"
. AddItem "9"
. AddItem "0"
End With
With ComboBox3
. AddItem "1"
. AddItem "2"
. AddItem "3"
. AddItem "4"
. AddItem "5"
. AddItem "6"
. AddItem "7"
. AddItem "8"
. AddItem "9"
. AddItem "0"
End With
With ComboBox4
. AddItem "1"
. AddItem "2"
. AddItem "3"
. AddItem "4"
. AddItem "5"
. AddItem "6"
. AddItem "7"
. AddItem "8"
. AddItem "9"
. AddItem "0"
End With
End Sub

1 Respuesta

Respuesta
3

Si quieres que se muestre el label cuando presionas el botón, podría ser así, el resultado que se va a mostrar es de la columna N y de la fila donde estás poniendo los datos de los combos.

Sub CommandButton2_Click()  'para Registrar
    Label1 = ""
    Label1.Visible = False
    Sheets("Hoja1").Select
    If ComboBox1 = "" Or ComboBox2 = "" Or ComboBox3 = "" Or ComboBox4 = "" Then
        MsgBox "Falta algún campo por cumplimentar", vbInformation, "Error de captura"
    Else
        Range("A" & Cells.Rows.Count).End(xlUp).Offset(1).Select
        ActiveCell = ComboBox1.Value
        ActiveCell.Offset(0, 1) = ComboBox2.Value
        ActiveCell.Offset(0, 2) = ComboBox3.Value
        ActiveCell.Offset(0, 3) = ComboBox4.Value
        '
        Label1.Visible = True
        Label1 = "EL RESULTADO DE LA MEDICIÓN ES " & Cells(ActiveCell.Row, "N")
        '
        MsgBox "Los datos se han registrado correctamente", vbOKOnly, "Registro"
        'limpio los datos
        ComboBox1 = ""
        ComboBox2 = ""
        ComboBox3 = ""
        ComboBox4 = ""
        Label1 = ""
        Label1.Visible = False
    End If
End Sub

Pero si quieres mostrar el label cuando modificas cualquiera de los 4 combos, entonces podría ser así. Pero lo que no me queda claro es de cuál fila se debe tomar el resultado, entiendo que se va a tomar de la columna "N", pero de cuál fila?

Agrega lo siguiente a tu formulario:

Private Sub ComboBox1_Change()
    MostrarLabel
End Sub
Private Sub ComboBox2_Change()
    MostrarLabel
End Sub
Private Sub ComboBox3_Change()
    MostrarLabel
End Sub
Private Sub ComboBox4_Change()
    MostrarLabel
End Sub
Sub MostrarLabel()
'
    Label1 = ""
    Label1.Visible = False
    fila = 2
    If ComboBox1 <> "" And ComboBox2 <> "" And ComboBox3 <> "" And ComboBox4 <> "" Then
        Label1.Visible = True
        Label1 = "EL RESULTADO DE LA MEDICIÓN ES " & Cells(fila, "N")
    End If
End Sub

Dime cómo encontrar la fila del resultado que quieres o cómo hacer el cálculo para saber si es alto, medio o bajo.

Muchas gracias Dante por las opciones que me indicas.

El primer caso me sirve para cuando pulso el botón registrar, ya que en la hoja1 tengo una formula en la columna N que calcula la valoración final dependiendo de los valores seleccionados en los 4 combos (cuyos valores se registran de la columna A a la D).

La segunda opción me preguntas de qué fila se toma la valoración. El caso que me pones como segunda opción me serviría si se pone la fórmula que tengo en el excel en el código de VB, si acaso habría que poner la formula que sería básicamente la de sumar cada uno de los valores de los cuatro combos por unos porcentajes que son respectivamente 20%, 30%, 10 % y 40%.  Es decir, que si el combo1 registro el valor 4, éste se multiplica por 20%, más el valor del combo2 por 30%, más el valor del combo3 por 10%, más el valor del combo4 por 40% (como una media ponderada).

Por lo tanto, si la suma de los resultados de los cuatro combos (puntuacion x porcentajes) resulta inferior a 4 la Valoración es BAJO, si es inferior a 7 la Valoración es MEDIO, si es superior a 7 es ALTO. 

Espero haberme explicado, y si puedes ampliar el código de la segunda opción que me explicas con los cálculos que te digo, te lo agradecería.

Te anexo el código para calcular el resultado

Private Sub ComboBox1_Change()
    MostrarLabel
End Sub
Private Sub ComboBox2_Change()
    MostrarLabel
End Sub
Private Sub ComboBox3_Change()
    MostrarLabel
End Sub
Private Sub ComboBox4_Change()
    MostrarLabel
End Sub
Sub MostrarLabel()
'Por.Dante Amor
    Label1 = ""
    Label1.Visible = False
    fila = 2
    If ComboBox1 <> "" And ComboBox2 <> "" And ComboBox3 <> "" And ComboBox4 <> "" Then
        Label1.Visible = True
        wsum = ComboBox1 * 0.2 + ComboBox2 * 0.3 + ComboBox3 * 0.1 + ComboBox4 * 0.4
        Select Case wsum
            Case Is < 4: res = "BAJO"
            Case Is < 7: res = "MEDIO"
            Case Is > 7: res = "ALTO"
        End Select
        Label1 = "EL RESULTADO DE LA MEDICIÓN ES " & res
    End If
End Sub

sal u dos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas