Saltar al contenido

Macro para trabajo repetitivo


Recommended Posts

publicado

Hola amigos.

Necesito asesoramiento con una macro para realizar un trabajo repetitivo.

Se trata de seleccionar la celda activa del cursor, que siempre será en la misma columna pero en distintas líneas cada vez, y realizar una serie de acciones (combinar celdas, aplicar referencia fija, insertar línea, borrar formato y agrupar líneas).

Saludos.

trabajo repetitivo.xlsx

publicado

Hola trate de seguir los puntos pero el resultado fue extraño, te dejo una sentencia que intenta hacer lo que dices aunque tengo dudas que desglosare por partes para ser lo más claro posible.

Inserta un módulo:

Sub Macro1()
    Dim fila As Integer
    fila = InputBox("Ingresa el número de fila")
    Range("A" & fila & ":B" & fila).Select
    With Selection
        .HorizontalAlignment = xlGeneral
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.Offset(1, 0).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A" & fila + 1 & ":D" & fila + 1).Select
    Selection.ClearFormats
    Range("A" & fila & ":B" & fila + 1).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
End Sub

 

publicado

Primera duda:

Cita

1. Selecccionar la celda activa del cursor, siempre en la columna A pero en líneas variables. (p.e. A1 y después A5)

De que siempre sea en la columna A es posible, pero para saber la fila hay que "decirle" a la sentencia cuál, pudiera ser la que este seleccionada pero hay detalles ¿Cómo ejecutaras el VBA? Por botón, eso mueve el cursor. ¿Por combinación de teclas? Así que ante la duda puse un mensaje donde le indicas que fila es.

publicado

Segunda duda:

Cita

3. Aplicar a la celda resultante la función de la tecla F4 para quedar como referencia fija. (p.e. $A$1)

Aquí no entendí muy bien, yo entiendo como referencia absoluta cuando una celda "apunta" a otra, entiendo que en este caso a las que se acaban de agrupar ¿Pero cual es esa celda que apuntara? También le podemos dar un nombre, para que ante la incógnita se puede usar ese rango.

publicado

Gracias por tu aporte, Israel.

Lo primero que intenté fue grabar una macro paso a paso. Pero siempre actuaba sobre la misma celda. De ahí mi petición de ayuda y la referencia a "la celda activa del cursor".

Respecto a tus dudas:

1ª. La idea es que la macro se active mediante un botón.

2ª. La referencia ya estará indicada en la celda. Lo que falta es hacerla "referencia fija" añadiendo el símbolo "$".

Respecto a tu código, podría servir, pero...

Lo ideal sería que actuase sobre la celda marcada por el cursor, pero puede valer indicarle la celda como tu haces.  El problema es que creo que confundes dos pasos: 

Uno es COMBINAR celdas (A1+B1)

Otro es AGRUPAR líneas (A1+A2).

Lo que hace tu macro es COMBINAR el rango A1:B2 (A1, B1, A2, B2)

Gracias.

publicado

Espero haber entendido ahora:

Sub Macro1()
    Dim fila As Integer
    fila = ActiveCell.Row
    Range("A" & fila & ":B" & fila).Select
    With Selection
        .HorizontalAlignment = xlLeft
        .VerticalAlignment = xlBottom
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = True
    End With
    Selection.Offset(1, 0).EntireRow.Insert Shift:=xlDown, CopyOrigin:=xlFormatFromLeftOrAbove
    Range("A" & fila + 1 & ":D" & fila + 1).Select
    Selection.ClearFormats
    Range("A" & fila & ":B" & fila + 1).Select
    
    Rows(fila & ":" & fila + 2).Group
    
End Sub

Este lo puedes agregar a un botón.

publicado
hace 36 minutos , home can dijo:

2ª. La referencia ya estará indicada en la celda. Lo que falta es hacerla "referencia fija" añadiendo el símbolo "$".

De ese punto lo lamento, no termino de entenderlo. Puedo hacerla absoluta sí como bien dices con F4, pero eso es cuando la indico dentro de una función en otra celda que ese valor es fijo. No es que tenga seleccionada la celda y al darle F2 para editar la convierta en fija, ahí es donde me pierdo.

Saludines.

publicado

Israel,

Esto mejora. Cambiando un par de conceptos sin importancia en las instrucciones funciona mejor. Pero hay algo que no consigo.

Hace correctamente el borrado de formato en la línea insertada, pero también borra el formato de la "celda activa". ¿Se puede modificar esto? Con ello, dejando de lado el asunto de la referencia fija, haría el trabajo requerido.

Gracias.

 

publicado

Si. Conste que el error estaba en mi hoja. Tu código funciona a la perfección.

Gracias Israel.

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.