Que bueno que estés experimentando !!! es la mejor manera de aprender. Por lo que te "tiro" algunas sugerencias adicionales:
1º)
Cita:
Iniciado por epa2 Range("A1").Select
ActiveCell.FormulaR1C1 = DNI
Este código desplaza el cursor a la celda "A1" (la convierte en celda activa) y luego le asigna a la celda el valor "DNI". OK... funciona... Pero uniendo las dos líneas anteriores queda:
Range("A1").FormulaR1C1 = DNI
Éste hace lo mismo... pero sin desplazamiento. Por lo tanto: menos líneas de programa y procesamiento más rápido...
2º)
Range("A1") es absolutamente equivalente a escribir:
[A1]. Personalmente, prefiero el segundo método. Aplicado al ejemplo anterior:
[A1].FormulaR1C1 = DNI
3º)
Cita:
Iniciado por epa2 ...sin embargo, este code no me pega los datos en las celdas, siguen vacías...
...Con esto tambien me daba error, me decía que el subíndice estaba fuera del intervalo...
Es "casi" seguro que lo que te esté ocurriendo es lo siguiente:
Cuando se ejecuta:
[A2].Formula = DNI probablemente la planilla activa no sea aquella donde quieres escribir el valor anterior, sino la planilla 2da. (en donde realizas la búsqueda). De modo que el código está escribiendo el valor "DNI" en la planilla equivocada.
Cuando tu perfeccionas el código mediante:
Worksheets("formulario") te da error de subíndice pues la 2da. planilla (la activa en ese momento) no tiene una hoja llamada "formulario"... Quien si la tiene es la 1er. planilla... ¿se entiende?...
En tal caso: dos soluciones
a) O realizas expresa mención a la 1er. planilla:
Workbooks("nombre_1er_archivo").Worksheets("formul ario"), ó
b) activas el 1er. archivo:
Windows("nombre_1er_archivo").Activate
c) Hay otros métodos (más sutiles y eficientes)... pero para empezar: está muy bien.
Saludos