Vou te dar duas dicas para otimizar seu acesso a dados:
1) na linha
ComBox.addItem dyn("Codigo") & ""
vc deve usar o indice do campo, no lugar do nome, assim:
ComBox.addItem dyn(0) & "" 'se o indice do campo for 0, senao muda
assim a pesquisa fica quase tres vezes mais rapida, pois nao precisa procurar o indice do campo, vc ja passou...
2) A segunda dica vc pode achar chata, mas é realidade... hoje em dia, nao se trabalha mais com DAO. Muda pra ADO que é mais rapido, mais confiavel, e ainda permite migrar para outras bases de dados futuramente... Alem do mais, com ADO vc pode abrir um Recordset somente para leitura sem ponteiros (muitissimo mais rapido que um RS normal...), ideal pra preencher listas, como esse combo...
Mas se vc me permite deixar mais uma sugestao, o comando OpenRecordset (acho que é assim que se chama) é mais rapido que o CreateDynaset... pode te ajudar...
Mas o problema que vc tem (15 minutos) com certeza nao tem nada a ver com isso tudo que eu disse... ou vc tem muito pouca memoria, ou tem algum outro processo impedindo que seu programa acesse os dados diretamente... ou entao a rede é muito lenta, etc... vale a pena vc dar uma olhada nessas caracteristicas fisicas...
Abraços...