Como puedo alentar una macro en VBA

A quien pueda ayudarme

Tengo una parte de un código que al ejecutarse va repitiendo hacia abajo y a lo largo de una columna, una fecha.

Lo cierto es que la macro opera tan rápido que no le da tiempo a que las celdas se completen y luego continúa dejando incompleto el rango (No me sirve el WAIT pues produce el mismo efecto)

f = 3
Application.ScreenUpdating = False
Do
With h3.Range("J3:J" & f)
h3.Range("J3:J" & f).Value = h1.Range("E5").Value
f = f + 1
End With
Loop Until Cells(f, 10).Value <> ""

¿Alguien podria ayudarme?

1 respuesta

Respuesta
1

Parece que a todas las celdas les quiere poner el mismo valor y es el que tienes en la hoja 'h1', en la celda E5, si esto es así entonces te recomiendo que cambies ese código por este otro:

Application.ScreenUpdating = False
f = h3.cells(3,10).End(xlDown).Row
if f > 1000000 then f = 3
h3.range(cells(3,10),cells(f,10)).Value = h1.Range("E5").Value

Salu2

En ppio muchas gracias Omar por tu gentileza. Quiero que sepas que es apreciada.

Puse el código en reemplazo del existente y si lo trazo manualmente con F8, funciona a la perfección pero si lo paso por código directamente me da error 1004 en el método Range de objeto Worksheet.

Cosa e mandinga diría el Gaucho!. ¿Cuál seria tu indicación en este caso?

Abrazo y muchas gracias

¿En qué línea te está dando el error? Supongo que es en la última, por lo que una posibilidad es: (aunque hay que probarlo...)

Application.ScreenUpdating = False
f = h3.cells(3,10).End(xlDown).Row
if f > 1000000 then f = 3
With h3
 .Range(Cells(3,10),Cells(f,10)).Value = h1.Cells(5,5).Value
End With

Exactamente es en la ultima... pero es raro pues manualmente funciona y disparando el código se cuelga allí, justo allí!

Esto es increíble (pego el error)

Gracias por tu aporte

Valore tu aporte pero aun así, creo que hay alguna otra posibilidad.

¿Esto es así? Adelante Gustavo, te escucho

Muchas gracias!

Intentemos desmenuzar el código para ver si encontramos el error.

Intento 1: Asignar el valor de la hoja 'h1' en una variable

Application.ScreenUpdating = False
f = h3.cells(3,10).End(xlDown).Row
if f > 1000000 then f = 3
varAuxiliar = h1.Cells(5,5).Value
H3. Range(Cells(3,10), Cells(f, 10)).Value = varAuxiliar

Intento 2: similar al 1, pero cambiando de hojas antes de asignar el valor (a veces funciona esto, aunque no entiendo por qué)

Application.ScreenUpdating = False
f = h3.cells(3,10).End(xlDown).Row
if f > 1000000 then f = 3
h1.Select
varAuxiliar = h1.Cells(5,5).Value
h3.Select
H3. Range(Cells(3,10), Cells(f, 10)).Value = varAuxiliar

Salu2

¡Gracias!

Excelente! Funciono la segunda opción!

Quedo perfecto y te estoy muy agradecido

Te dejo un fuerte abrazo!

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas