Saltar al contenido

Error en la macro y macro lenta

publicado

Buen dia ,tengo una gran problema estoy ejecutando una macro para que los valores de una columna o rango de columna sea dividio entre 10 y 100, resalto tambien que ese rango de columnas hay datos como "----" y texto , el problema es que me bota un error , adjunto imagen , ademas que se ejecuta muy lento

Sub DIVISION()

Dim cell As Range

For Each cell In Hoja1.Range("E4:F2000,G4:L2000,N4:S2000")

cell = cell / 10

Next

End Sub

post-178487-145877010634_thumb.png

Featured Replies

publicado
  • Autor

Listo ya pude cargarlo lo reduci al maximo :) , las disculpas del caso

Buen dia ,tengo una gran problema estoy ejecutando una macro para que los valores de una columna o rango de columna sea dividio entre 10 y 100, resalto tambien que ese rango de columnas hay datos como "----" y texto , el problema es que me bota un error , adjunto imagen , ademas que se ejecuta muy lento

betadv.rar

publicado

Hola!

Para hacer lo que quieres, prueba esta macro:

Sub prueba()
Dim Rango1 As Range
Dim Rango2 As Range

' Asigno a dos celdas los valores
Range("IV1:IV2") = Array(10, 100)

' Defino los rangos
Set Rango1 = Range("E4:F2000,G4:L2000,N4:S2000,AA4:AA2000")
Set Rango2 = Range("G4:G2000 ,M4:M2000, T4:Y200")

' Divido por los valores correspondientes
Range("IV1").Copy
Rango1.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide

Range("IV2").Copy
Rango2.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide

' Borro los valores auxiliares
Range("IV1:IV2").ClearContents

' Libero Recursos
Set Rango1 = Nothing
Set Rango2 = Nothing

Application.Goto Range("A1")
End Sub[/CODE]

Es bastante rápida en su ejecución.

Comentas!

Espero haberte ayudado, Dios te bendiga!

publicado
  • Autor

Eres un capo de verdad muchisimas gracias me ayudaste bastante, ya no me tira nada de error muchas gracias una consulta adicional ya para cerrar el tema , para que sirve este comando : Application.Goto Range("A1")

Hola!

Para hacer lo que quieres, prueba esta macro:

Sub prueba()
Dim Rango1 As Range
Dim Rango2 As Range

' Asigno a dos celdas los valores
Range("IV1:IV2") = Array(10, 100)

' Defino los rangos
Set Rango1 = Range("E4:F2000,G4:L2000,N4:S2000,AA4:AA2000")
Set Rango2 = Range("G4:G2000 ,M4:M2000, T4:Y200")

' Divido por los valores correspondientes
Range("IV1").Copy
Rango1.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide

Range("IV2").Copy
Rango2.PasteSpecial Paste:=xlPasteAll, Operation:=xlDivide

' Borro los valores auxiliares
Range("IV1:IV2").ClearContents

Application.Goto Range("A1")
End Sub[/CODE]

Es bastante rápida en su ejecución.

Comentas!

Espero haberte ayudado, Dios te bendiga!

publicado

Application.Goto Range("A1")

Sirve simplemente para ir a la celda A1.

Recuerda hacer clic en "me gusta" en la (o las respuestas) que ayudan a resolver tus dudas (parte inferior derecha de cada respuesta)... y que gane COLOMBIAAAAA!!!!

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.