Saltar al contenido

Como hacer que una macro se aplique sucesivamente en varias filas de una columna seleccionada?


Recommended Posts

publicado

Tengo esta pequeña macro con el fin de incrementar o disminuir el precio de varios artículos en una lista de precios a partir de un valor porcentual, donde B70 es la celda en la cual se especifica el valor a aplicar, en formato de porcentaje, sin embargo solo he logrado que se ejecute en una única fila de la columna B, ¿cómo puedo hacer que continue sucesivamente hasta un rango determinado? En mi caso seria (B2:B65) rango que contiene todos los precios que desearía incrementar o disminuir.

'Disminuir el valor de la celda.

Sub Macro_Bajar_Valor()

    Range("B2") = Range("B2") / (1 + Range("B70"))

End Sub

'Aumentar el valor de la celda.

Sub Macro_Subir_Valor()

    Range("B2") = Range("B2") * (1 + Range("B70"))

End Sub

publicado
'Disminuir el valor de la celda.

Sub Macro_Bajar_Valor()
For Each Celda In Range("B2:B65")
    Celda.Value = Celda.Value / (1 + Range("B70"))
Next
End Sub

'Aumentar el valor de la celda.

Sub Macro_Subir_Valor()
For Each Celda In Range("B2:B65")
    Celda.Value = Celda.Value * (1 + Range("B70"))
Next
End Sub

 

publicado
Hace 1 hora, Macro Antonio dijo:

'Disminuir el valor de la celda.

Sub Macro_Bajar_Valor()
For Each Celda In Range("B2:B65")
    Celda.Value = Celda.Value / (1 + Range("B70"))
Next
End Sub

'Aumentar el valor de la celda.

Sub Macro_Subir_Valor()
For Each Celda In Range("B2:B65")
    Celda.Value = Celda.Value * (1 + Range("B70"))
Next
End Sub

 

Funciona perfectamente!

Mil Gracias!!

 

Una consulta mas aprovechando el tema, como podría hacer para saltar las celdas vacias, sin valor?

 

Gracias

publicado
'Disminuir el valor de la celda.

Sub Macro_Bajar_Valor()
For Each Celda In Range("B2:B65")
   If Not Trim(Celda.Value) = Empty then
      Celda.Value = Celda.Value / (1 + Range("B70"))
   End If
Next
End Sub

'Aumentar el valor de la celda.

Sub Macro_Subir_Valor()
For Each Celda In Range("B2:B65")
   If Not Trim(Celda.Value) = Empty then
      Celda.Value = Celda.Value * (1 + Range("B70"))
   End If
Next
End Sub

 

  • Silvia bloqueó este tema

Archivado

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

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.