Hola, lo siento... se me había olvidado responder :P
Bueno, a ver si esto nos sirve:
Primero, en un libro nuevo, tengo una hoja, Hoja1, con una lista de nombres, que es la que utilizaré.
En A1 de esa hoja pongo el título (Solo por ponerlo !), Nombres. En A2, y hacia abajo, comienzo a poner los nombres que me interesan:
Juan
Pablo
Alberto
Natalia
Monica
etc.
Esta lista es la que será "dinámica", es decir, añadiré (Y borraré) nombres más adelante, por lo que la lista tiene que ser "inteligente"...
Presiono Ctrl F3, para abrir el diálogo de Definir Nombre. Ahí, pongo MiRango como el nombre, y en "Se refiere a:" la fórmula
=Hoja1!$A$2:INDICE(Hoja1!$A:$A, COINCIDIR(REPETIR("z", 255), Hoja1!$A:$A))
¿qué hace esta fórmula? bueno, crea un rango así, desde Hoja1!A2 (Que es el primer nombre), hasta el último texto que se encuentre en la columna A. Esto se hace con el INDICE(COINCIDIR()) así:
REPETIR("z", 255) es, alfabéticamente, el texto "más" grande que se puede tener, así que
COINCIDIR(textomuygrande, Hoja1!A:A)
me devuelve su ubicación dentro de la columna A. Para números se utiliza
9.9999999999999E+307
en vez de REPETIR(), porque es el número más grande que se puede tener en Excel.
Como COINCIDIR me devuelve el número de la FILA donde está el texto, utilizo INDICE para que me cree una "referencia" hacia esa celda... mejor dicho, la función INDICE no devuelve un valor, sino que devuelve un Rango ! por eso puedo utilizarlo así:
=INDICE(...):INDICE(...)
o como en este caso, desde una posición conocida hasta la desconocida:
=A1:INDICE(...)
Listo, después de hacer clic en "Agregar", tenemos nuestro rango dinámico creado.
Ahora, vamos a crear el formulario (Userform). Presionamos Alt + F11 para ir al editor de Visual Basic (VBE en Inglés). Ahí, vamos a Insertar | Userform
Nos sale un Userform vacío. Ahora, ahí, vamos a agregar un ComboBox, este tendrá el nombre ComboBox1 que es el que se le asigna por defecto...
Con este ComboBox seleccionado, presionamos F4, para que nos aparezca la ventana de propiedades. Ahí hay una propiedad que se llama RowSource que es un string (texto) que corresponde a la ubicación donde están los datos que aparecerán en el ComboBox. Como nuestra lista está en el rango MiRango, escribimos 'MiRango' sin las comillas ahí.
Listo, ahora hacemos un click en el Userform para activarlo, y presionamos F5 para "ejecutar" el formulario y verlo "funcionando". Ahí debe aparecer el combobox, inicialmente vacío, pero si se hace clic en la flecha para mostrar las opciones, deben aparecer todos los nombres que tenemos en la lista.
Para cerrar el formulario se debe hacer click en la "x". Si se quiere, agreguen o borren nombres a la lista y ejecuten nuevamente el Userform, para ver que funcione...
Saludos !