Formularios: Unificar varios Change() o Exit() en una funcion

Dentro de un formulario tengo 8/16/36 Combobox(según) los cuales van con funciones, change() y exit, y también los cuales, son las mismas funciones para todos los combobox(enumerados del 1 al 32)

La pregunta es, podría unificar las funciones en una solo, para por si algún día tendría que hacer un cambio, hacerlo en una función unicamente. Dado que si hay cambiar, tendría que cambiarlo en los 32 combobox al mismo tiempo.

Ejemplo:

Private Sub CLote1_Change()
Lote1.Clear
indice = 16 + CLote1.ListIndex + 1
Cells(4, indice).Select
Do While ActiveCell.Value <> ""
Lote1.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub
Private Sub CLote2_Change()
Lote2.Clear
indice = 16 + CLote2.ListIndex + 1
Cells(4, indice).Select
Do While ActiveCell.Value <> ""
Lote2.AddItem ActiveCell
ActiveCell.Offset(1, 0).Select
Loop
End Sub

Y así hasta 32 Change() y Exit() con sus correspondientes cambios de numeración.

1 respuesta

Respuesta
2

H o l a: Esta sería una opción. Creé el procedimiento Cargar_Lote, le paso como parámetros los 2 combos, el modificado y el que vas a cargar.

En la llamada al procedimiento tienes que poner los 2 combos. El procedimiento será igual para todos los casos.

Private Sub CLote1_Change()
    Call Cargar_Lote(CLote1, Lote1)     'Poner los 2 combos que intervienen
End Sub
Private Sub CLote2_Change()
    Call Cargar_Lote(CLote2, Lote2)     'Poner los 2 combos que intervienen
End Sub
'
Sub Cargar_Lote(Combo_CLote As ComboBox, Combo_Lote As ComboBox)
'Por.Dante Amor
    Combo_Lote.Clear
    indice = 16 + Combo_CLote.ListIndex + 1
    Cells(4, indice).Select
    Do While ActiveCell.Value <> ""
        Combo_Lote.AddItem ActiveCell
        ActiveCell.Offset(1, 0).Select
    Loop
End Sub
'S aludos. Dante Amor. Recuerda valorar la respuesta. G racias

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas