Puedes utilizar un formulario con un combobox, que viene siendo lo mismo pero en una ventana emergente.
Para crear el formulario es muy fácil, abres el editor de vba, y haces botón derecho "insertar formulario"
Luego eliges en el cuadro de herramientas el combobox ( cuadro combinado ) y lo dibujas sobre el formulario
Debería quedarte con este aspecto:
Ahora deberás crear:
- Una macro que abra el userform
- Una macro que cargue los valores del desplegable
- Por ultimo una que escriba sobre tu celda
La macro para abrirlo es super sencilla:
Sub AbrirFormulario()
UserForm1.Show
End Sub
La macro para cargar valores, te copio una que encontré en exceltotal, te dejo también el enlace donde explican en detalle como cargar catos en un combobox
Ojo, esta macro la debes crear en el propio formulario, para abrir el código del formulario haces clic derecho y "ver codigo"
Private Sub UserForm_Initialize()
Dim rango, celda As Range
Set rango = Worksheets("Ejemplo1").Range("A1:A7")
For Each celda In rango
ComboBox1.AddItem celda.Value
Next celda
End Sub
El enlace --> ExcelTotal: Cargar datos en un combo box
Por último puedes crear una macro para escribir en la celda activa el valor que hayas elegido en el combobox, por ejemplo una forma sería que se escriba automáticamente en cuanto lo hayas seleccionado.
Para esto vas de nuevo al userform, click derecho y esta vez eliges "ver objeto"
Luego clic derecho en el combobox y "ver código"
Y ahí en el código del combo box introduces el código:
Private Sub ComboBox1_Change()
ActiveCell.Value = ComboBox1.Value
UserForm1.Hide
End Sub
Pruebalo a ver que tal te funciona, en teoría debería consumir menos recursos que la validación de datos.
Cualquier duda comentamos.
Suerte