Visual Basic para Aplicaciones - Función If en combobox

Life is soft - evento anual de software empresarial
 
Vista:

Función If en combobox

Publicado por Eduardo Herrera (1 intervención) el 20/09/2023 10:22:18
Quiero poder simplificar este código, de manera que funcione como un BuscarV, no se si se pueda

Private Sub UserForm_Initialize()
ComboBox1.List = Worksheets("Listas").Range("A2:A8").Value
End Sub

Private Sub ComboBox1_Change()
If ComboBox1.Text = "Lista 1" Then
Label9.Caption = Worksheets("Listas").Range("b1").Value
Else
If ComboBox1.Text = "Lista 2" Or ComboBox1.Text = "Lista 3" Then
Label9.Caption = Worksheets("Listas").Range("b2").Value
Else
If ComboBox1.Text = "Lista 4" Then
Label9.Caption = Worksheets("Listas").Range("b3").Value
Else
If ComboBox1.Text = "Lista 5" Or ComboBox1.Text = "Lista 6" Or ComboBox1.Text = "Lista 7" Then
Label9.Caption = Worksheets("Listas").Range("b6").Value
End If
End If
End If
End If
End If
End If
End Sub


Listas Operdadores
Lista 1 operador 1
Lista 2 operador 2
Lista 3 operador 2
Lista 4 operador 3
Lista 5 operador 4
Lista 6 operador 4
Lista 7 operador 4
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.134
Oro
Ha mantenido su posición en Visual Basic para Aplicaciones (en relación al último mes)
Gráfica de Visual Basic para Aplicaciones

Función If en combobox

Publicado por Antoni Masana (498 intervenciones) el 20/09/2023 13:43:36
A mi el código me gusta verlo así

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Private Sub UserForm_Initialize()
	ComboBox1.List = Worksheets("Listas").Range("A2:A8").Value
End Sub
 
Private Sub ComboBox1_Change()
	If ComboBox1.Text = "Lista 1" Then
		Label9.Caption = Worksheets("Listas").Range("b1").Value
	Else
		If ComboBox1.Text = "Lista 2" Or ComboBox1.Text = "Lista 3" Then
			Label9.Caption = Worksheets("Listas").Range("b2").Value
		Else
			If ComboBox1.Text = "Lista 4" Then
				Label9.Caption = Worksheets("Listas").Range("b3").Value
			Else
				If ComboBox1.Text = "Lista 5" Or ComboBox1.Text = "Lista 6" Or ComboBox1.Text = "Lista 7" Then
					Label9.Caption = Worksheets("Listas").Range("b6").Value
				End If
			End If
		End If
	End If
	End If
	End If
End Sub

Y asi veo que esta mal por que sobran 2 End If

Lo que buscas es esto:

1
2
3
4
5
6
7
8
9
10
11
Private Sub ComboBox1_Change()
    Select Case ComboBox1.Text
        Case "Lista 1": Label9.Caption = Worksheets("Listas").Range("b1").Value
        Case "Lista 2": Label9.Caption = Worksheets("Listas").Range("b2").Value
        Case "Lista 3": Label9.Caption = Worksheets("Listas").Range("b2").Value
        Case "Lista 4": Label9.Caption = Worksheets("Listas").Range("b3").Value
        Case "Lista 5": Label9.Caption = Worksheets("Listas").Range("b6").Value
        Case "Lista 6": Label9.Caption = Worksheets("Listas").Range("b6").Value
        Case "Lista 7": Label9.Caption = Worksheets("Listas").Range("b6").Value
    End Select
End Sub

Otra forma de acerlo:

1
2
3
4
5
6
7
8
9
10
11
12
13
Private Sub ComboBox1_Change()
	With Worksheets("Listas")
         Select Caase ComboBox1.Text
    	    Case "Lista 1": Label9.Caption = .Range("b1").Value
    	    Case "Lista 2": Label9.Caption = .Range("b2").Value
    	    Case "Lista 3": Label9.Caption = .Range("b2").Value
    	    Case "Lista 4": Label9.Caption = .Range("b3").Value
    	    Case "Lista 5": Label9.Caption = .Range("b6").Value
    	    Case "Lista 6": Label9.Caption = .Range("b6").Value
    	    Case "Lista 7": Label9.Caption = .Range("b6").Value
    	End Select
    End With
End Sub

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar