Sellecion por default en combobox vba

Escribo porque tengo una duda sobre el combobox en VBA de excel. El tema parece bastante sencillo (y seguramente lo es) pero me esta dando algunos dolores de cabeza: tengo una form que realiza varias operaciones, y una de ellas es llenar un combobox para luego, según la selección, realizar una tarea dada. Esto ya esta casi terminado, pero me quedo una pequeñez que haría más fácil las cosas: quisiera que cuando ejecuto el userform, ademas de llenar el combobox automáticamente (esto ya eswta hecho), seleccione la primera opción como default, es decir, al cliquear "aceptar" ejecute esta primera opción, a menos, obviamente que se cambie manualmente.
Buscando por ahí encontré que el comando debería ser combobox1. Listindex=0
pero lo probé y, si bien al final me deja el cursor por default en la opción requerida, llena la lista dos veces con datos repetidos, es decir, se ejecuta combobox1_change() dos veces, la primera en la inicialización, y la segunda cuando ejecuta el comando listindex.
Este comando lo probé de dos formas:
privete sub userform1_initialize()
call combobox1_change()
combobox1.listindex=0
end sub
Y la otra forma es dentro de la misma combobox1_change(), luego del lazo que llena la lista, y en ambos casos hace lo mismo, vuelve a ejecutar combobox1_change(), llenando de esta forma la lista dos veces con datos repetidos.
Gracias, y perdón por la extensión, pero me costaba explicarlo de una forma clara (

1 respuesta

Respuesta
1
Lo que pasa es que ComboBox1. ListIndex = 0 invoca el evento change del mismo control otra vez.
Prueba lo siguiente
1 carga el form
2 carga los datos en el combo desde( un sub independiente) y luego aplicas ComboBox1. ListIndex = 0
3. Llama el evento que debe realizar con el indice 0 del combo
ej:
Private Sub UserForm_Initialize()
Call cargar
ComboBox1.ListIndex = 0
End Sub
Private Sub cargar()
     ComboBox1.AddItem 1
End Sub
En tu código la linea ComboBox1. ListIndex = 0 por si misma llama a: combobox1_change() y así como esta esats invocando el sub dos veces

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas