• 👏 Bienvenido a nuestra comunidad Excel

    ¿Todavía no estás registrado? 😲

    Registrate gratis aquí y podrás:

    💪 Hacer preguntas a los expertos
    ⬇️ Descargar ejemplos y plantillas
    🏅 
    Acceder a contenidos premium

ciclo for en combobox

Como podria meter acortar el siguiente codigo,en un ciclo for,ya que solo ira cambiando el numero de combobox:

Private Sub Combobox5_Change()

On Error Resume Next
valor = ComboBox5.List(ComboBox5.ListIndex, 0)
If valor = "" Then
If ComboBox5 <> "" Then
MsgBox "No se permiten valores diferentes a los del combo", vbCritical, "Error"
ComboBox5.SetFocus
ComboBox5 = ""
End If
End If

If ComboBox1 = "lun" Then
Call ValidarCelda2

End If
If ComboBox1 = "mar" Then
Call ValidarCelda2

End If
If ComboBox1 = "mié" Then
Call ValidarCelda2

End If
If ComboBox1 = "jue" Then
Call ValidarCelda2

End If
If ComboBox1 = "vie" Then
Call ValidarCelda2

End If
If ComboBox1 = "sáb" Then
Call ValidarCelda2

End If
If ComboBox1 = "dom" Then
Call ValidarCelda2

End If
End Sub








espero y puedan ayudarme

saludos
 
Como podria meter acortar el siguiente codigo,en un ciclo for,ya que solo ira cambiando el numero de combobox:

Private Sub Combobox5_Change()

On Error Resume Next
valor = ComboBox5.List(ComboBox5.ListIndex, 0)
If valor = "" Then
If ComboBox5 <> "" Then
MsgBox "No se permiten valores diferentes a los del combo", vbCritical, "Error"
ComboBox5.SetFocus
ComboBox5 = ""
End If
End If

If ComboBox1 = "lun" Then
Call ValidarCelda2

End If
If ComboBox1 = "mar" Then
Call ValidarCelda2

End If
If ComboBox1 = "mié" Then
Call ValidarCelda2

End If
If ComboBox1 = "jue" Then
Call ValidarCelda2

End If
If ComboBox1 = "vie" Then
Call ValidarCelda2

End If
If ComboBox1 = "sáb" Then
Call ValidarCelda2

End If
If ComboBox1 = "dom" Then
Call ValidarCelda2

End If
End Sub








espero y puedan ayudarme

saludos
En el codigo tenes un chequeo con el combobox5, pero luego controlas en un IF el combobox1
Cuantos combobox tenes? que parte del codigo queres acortar? El chequeo de los dias de la semana?
o queres meter en un ciclo FOR, todo el codigo del evento Private Sub Combobox5_Change(), debido a que tenes varios combobox y vas a chequear lo mismo en todos? (en ese caso cuantos combobox tenes en el formulario?).

Te paso una posible solucion si es que te llegue a comprender lo que necesitas.


Codigo:


Código:
Private Sub ComboBox2_Change()

    Dim cbnum As String
    
    cbnum = "ComboBox2"
   
    Call comboboxcontrol(cbnum)

End Sub


Private Sub ComboBox3_Change()

    Dim cbnum As String
    
    cbnum = "ComboBox3"
   
    Call comboboxcontrol(cbnum)

End Sub

Sub comboboxcontrol(cb As String)

    valor = Controls(cb).List(Controls(cb).ListIndex, 0)

    If valor = "" Then

        If Controls(cb) <> "" Then

            MsgBox "No se permiten valores diferentes a los del combo", vbCritical, "Error"

            Controls(cb).SetFocus

            Controls(cb) = ""

        End If

    End If

   
If ComboBox1 = "lun" Then

Call ValidarCelda2

   

End If

If ComboBox1 = "mar" Then

    Call ValidarCelda2

   

End If

If ComboBox1 = "mié" Then

    Call ValidarCelda2

   

End If

If ComboBox1 = "jue" Then

    Call ValidarCelda2

   

End If

If ComboBox1 = "vie" Then

    Call ValidarCelda2

   

End If

If ComboBox1 = "sáb" Then

    Call ValidarCelda2

   

End If

    If ComboBox1 = "dom" Then

    Call ValidarCelda2

   

End If
    
    
End Sub

Sub ValidarCelda2()

MsgBox "llega aqui"

End Sub


El codigo que te envie cheque si esta escrito el dia de la semana en el combobox1
cuando haces algun cambio en algun otro combobox, por ejemplo en el combobox2.
Entonces eso llama a la rutina comboboxcontrol, que seria la que llamarian todos los combobox que tengas
cuando haya algun cambio.

Te paso el adjunto asi lo ejecutas directo y cualquier cosa me avisas.
saludos.

1596152083501.png
Saludos.
 

Adjuntos

Antoni

Well-known member
Código:
Select Case ComboBox1
   Case "lun","mar","mie","jue","vie",sab","dom": Call ValidarCelda2
End Select


Y si en el combobox solo tienes los días de la semana:
Código:
If ComboBox1.Listindex = -1 then
   Msgbox "Seleccione un día de la semana",vbCritical,"Validación día de la semana"
Else
   Call ValidarCelda2
End If
 
Arriba