¿Por que tengo que dar click 3 veces en el botón de macro para que se ejecute todo el proceso?

Tengo una macro que me copia datos de una hoja a otra, eliminándolos al mismo tiempo, pero no me los copia todos de una vez, si no que va poquito por poquito, ¿qué debo hacer en la macro para que se ejecute y copie todos de una vez?

1 respuesta

Respuesta
1

Muestra el código de la macro para que podamos ayudarte...

Sub extraerDatos()
Dim ultFilaPendientes As Long
Dim ultFilaEficiencia As Long
Dim Proyecto As Double
Dim SOF As Double
Dim Oficina As String
Dim idsolicitud As Double
Dim ExtraPlan As String
Dim TotalSC As Double
Dim Solicitado As String
Dim Aprobado As String
Dim AceptadoCompras As String
Dim OficialDeAdquisicionesResponsable As String
Dim Requerido As String
Dim MargenDeCompra As Double
Dim Anulada As String
Dim idorden As Double
Dim totalOC As Double
Dim monedaOC As String
Dim OficinaEjecuta As String
Dim FechaEntrega As String
Dim Cumplimiento As Double
Dim tipoDeProceso As String
Dim DiasTipoProceso As String
Dim DiasDelProceso As Double
Dim cont As Long
ultFilaPendientes = Sheets("Procesos Pendientes").Range("A" & Rows.Count).End(xlUp).Row
For cont = 4 To ultFilaPendientes
Proyecto = Sheets("Procesos Pendientes").Cells(cont, 1)
SOF = Sheets("Procesos Pendientes").Cells(cont, 2)
Oficina = Sheets("Procesos Pendientes").Cells(cont, 3)
idsolicitud = Sheets("Procesos Pendientes").Cells(cont, 4)
ExtraPlan = Sheets("Procesos Pendientes").Cells(cont, 5)
TotalSC = Sheets("Procesos Pendientes").Cells(cont, 6)
Solicitado = Sheets("Procesos Pendientes").Cells(cont, 7)
Aprobado = Sheets("Procesos Pendientes").Cells(cont, 8)
AceptadoCompras = Sheets("Procesos Pendientes").Cells(cont, 9)
OficialDeAdquisicionesResponsable = Sheets("Procesos Pendientes").Cells(cont, 10)
Requerido = Sheets("Procesos Pendientes").Cells(cont, 11)
MargenDeCompra = Sheets("Procesos Pendientes").Cells(cont, 12)
Anulada = Sheets("Procesos Pendientes").Cells(cont, 13)
idorden = Sheets("Procesos Pendientes").Cells(cont, 14)
totalOC = Sheets("Procesos Pendientes").Cells(cont, 15)
monedaOC = Sheets("Procesos Pendientes").Cells(cont, 16)
OficinaEjecuta = Sheets("Procesos Pendientes").Cells(cont, 17)
FechaEntrega = Sheets("Procesos Pendientes").Cells(cont, 18)
Cumplimiento = Sheets("Procesos Pendientes").Cells(cont, 19)
Anulada = Sheets("Procesos Pendientes").Cells(cont, 20)
tipoDeProceso = Sheets("Procesos Pendientes").Cells(cont, 21)
DiasTipoProceso = Sheets("Procesos Pendientes").Cells(cont, 22)
DiasDelProceso = Sheets("Procesos Pendientes").Cells(cont, 23)
If idorden > 0 Then
ultFilaEficiencia = Sheets("Procesos Autorizados").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 1) = Proyecto
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 2) = SOF
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 3) = Oficina
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 4) = idsolicitud
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 5) = ExtraPlan
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 6) = TotalSC
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 7) = Solicitado
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 8) = Aprobado
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 9) = AceptadoCompras
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 10) = OficialDeAdquisicionesResponsable
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 11) = Requerido
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 12) = MargenDeCompra
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 13) = Anulada
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 14) = idorden
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 15) = totalOC
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 16) = monedaOC
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 17) = OficinaEjecuta
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 18) = FechaEntrega
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 19) = Cumplimiento
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 22) = Anulada
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 23) = tipoDeProceso
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 24) = DiasTipoProceso
Sheets("Procesos Autorizados").Cells(ultFilaEficiencia + 1, 25) = DiasDelProceso
Range("A" & cont).EntireRow.Delete
cont = cont + 1
End If
Next cont
End Sub

Viendo el código veo dos posibilidades:

1) Es que tengas filas en blanco, por eso cuando calculas ultFilaPendientes o ultFilaEficiencia no esté encontrando realmente todos los valores.

2) Estás usando la instrucción For ... Next con la variable cont, pero casi al final del procedimiento, veo que a cont lo incrementás en 1. Revisa si esto es realmente lo que querés hacer, porque ya la instrucción For incrementa la variable y puede ser que la estés incrementando 2 veces (por lo que estás salteando valores)

Creo que deberías hacer una ejecución de la macro 'paso a paso' para ver si va haciendo lo que realmente querés que haga

Salu2

muchas gracias! tengo otra duda para esa macro, hay alguna posibilidad que los datos me los vaya copiando manteniendo el formato que trae de la hoja?

Si, pero con copiar / pegar valores, no de la forma que lo estás haciendo porque de ese modo el formato 'se pierde' al guardarlo en la variable...

usando esa forma entonces no hay manera de aplicar el mismo formato?, ni poniendo una nueva variable?

Lo que pasa es que las variables almacenan los valores, no los formatos...

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas