Agregar nuevas instrucciones a Macro existente

Tu me ayudaste con la siguiente macro que funciona fenomenal:

Sub CopiarFormato()
'Por.Dante Amor
    Set h1 = Sheets("Registro")
    Set h2 = Sheets("DiseñoIngreso")
    'BUSCA LA ULTIMA FILA VACIA EN LA COLUMNA B
    u = h1.Range("B" & Rows.Count).End(xlUp).Row
    'SI LA FILA ES MENOR A 17 ENTONCES
    If u < 17 Then
        d = 18
        u = 18
    'SI NO ES ASI ENTONCES
    Else
        d = u + 4
    End If
    'VOY DEFINIENDO LO QUE VOY A COLOCAR
    num = h1.Cells(u - 1, "B")
    num = Replace(num, "#", "")
    num = Replace(num, ".", "")
    num = Replace(num, " ", "")
    num = Val(num) + 1
    h2.Rows(2 & ":" & 4).Copy
    h1.Range("A" & d - 1).PasteSpecial Paste:=xlAll
    h1.Range("A" & d - 1).PasteSpecial Paste:=xlPasteColumnWidths
    h1.Range("B" & d - 1) = "# " & num & "."
End Sub

Esta macro lo que hace es que busca la primera fila vacia desde la fila 17 con respecto a la columna "B" de la hoja "Registro" y cuando la encuentra, me copia el formato que se encuentra en la hoja "DiseñoIngreso" entre las filas 2 y 4 y lo pega en la hoja "Registro", cada vez que se ejecuta la macro, va pegando un nuevo formato uno debajo del otro.

Llamemos de ahora en adelante a este formato, formato #1.

Resulta que ahora en la hoja "DiseñoIngreso" ya no solo tengo 1 solo formato sino tengo 3 formatos: Formato #1, Formato #2 y Formato #3

Formato #1: Es el actual de la macro, está contenido desde la columna "A" entre las filas 2 y 4.

Formato #2: Esta contenido desde la columna "A" entre las filas 9 y 18.

Formato #3: Está contenido desde la columna "A" entre las filas 29 y 32.

La nueva macro que requiero y deseo y que me ayudes es que la macro haga lo siguiente:

Igualmente empezar desde la fila 17 como actualmente esta la macro, pero entonces lo primero que deseo que haga en caso de estar vacia es ya no copiar el formato #1 sino empezar copiando el formato #2, luego cuando le haga el segundo click copie el formato #1, tercer click el formato #1, cuarto click el formato #1, quinto click el formato #3, el sexto click empieza nuevamente la secuencia desde el formato #2.

En pocas palabras la hoja de excel debe llevar a partir de la fila 17 la secuencia:

Formato #2

Formato #1

Formato #1

Formato #1

Formato #3

Y empezar a repetir la secuencia. Primero el formato 2, luego 3 veces el formato 1 y luego el formato 3 y seguir asi la secuencia.

Ojalá me halla hecho entender.

1 respuesta

Respuesta
1

H o l a:

Si es posible, falta que digas cómo es el formato 2 y el formato 3.

¿Los formatos 2 y 3 también son contadores?

Puedes poner una imagen. Que se vean 2 o 3 veces las repeticiones .

Sa l u d o s

No, los formatos 2 y 3 no son contadores, el único formato que debe ir cambiando el número es el formato #1.Te voy a mandar primero la imagen de la hoja en donde dichos formatos están con el fin de que veas entre que columnas y filas están cada uno a pesar de que en el texto anterior te lo explique:

Ejemplo con 2 repeticiones, me toco tomar la imagen de ese tamaño para que se pudieran ver las dos repeticiones en una si

¿

Así si quedó más claro o necesitas que te mande alguna explicación adicional?

No sería más fácil que en una hoja tengas todo el formato

Encabezado

#

#

#

Pie

Y que la macro copie toda la hoja, y nada más reemplace los # por un número.

Cuántas veces quieres que la macro se ejecute, 3, 10, ¿1000?

Dante te quiero hacer una pregunta, a ver si de pronto de esa manera podemos darle solución a este punto.

Hay manera de construir una macro por ejemplo que revise unas filas de la hoja de excel por ejemplo las comprendidas entre "A17:A28" (Serían 12 filas) y revisar si en esa área hay datos o si el área esta vacía. Si el área tiene datos entonces copiar esas filas a otra hoja a partir de un destino de celda especifico, ejemplo "A11" y la macro tenga un blucle (Creo que así se llama) que entonces revise las siguientes 12 filas a partir de la anterior es decir la fila siguiente a "A28" osea a partir de "A29" o lo que es lo mismo, 13 filas después a la primera "A17" lo cual daría a partir de la fila "A29", en caso de tener datos entonces copiara esas otras 12 filas a una posición que fuera la última anterior es decir la ultima anterior es la "A11" + 12 = "A22" + 17 filas es decir que copiara las nuevas 12 filas en una posición 17 filas más abajo de la ultima fila anterior copiada, que en este caso daría la celda "A39" y así sucesivamente. Cuando la macro revise el grupo de 12 filas y no encuentre datos, termina la macro.

No entendí.

Entiendo lo que quieres, es decir, quieres copiar filas de una hoja a otra hoja; lo que no entiendo es tu diseño, la forma en que estás capturando la información y la forma en que lo quieres en otra hoja es muy compleja, no entiendo por qué no pones la información en un hoja a renglón seguido como si fuera una base de datos, y entonces la macro que lea desde la fila 1 hasta la última fila con datos y que vaya creando el formato para impresión o para PDF o para lo que quieras, pero partiendo de una base de datos, no de un formato con espacios y vacíos y varias validaciones, y luego pasarlo a otro formato con encabezados, pies de página, cortes de hoja, etc, etc, etc.

Lo que pasa Dante es que ya tengo ciertas cosas adelantadas con lo que te estoy contando, es decir, estoy partiendo con lo que tengo para poder moldearlo a lo quiero.

De la manera que tu me pides es perder todo lo que llevo y volver a empezar de cero.

No estoy en contra de eso, pero de ser así necesitaría de parte tuya mucha orientación de como empezar, pues sé que el proyecto que deseo es un poco complejo y por ello de su dificultad de hacerlo.

Que tal entonces si para empezar, yo te muestro ejemplos del resultado que deseo, y partiendo del final me vas guiando de como debo construir el principio, ¿te parece?

Te recomiendo ampliamente que empieces de nuevo. Cada que avances se hará más complejo y de una vez te digo que tu proyecto ya está muerto por la complejidad que le estás poniendo, va llegar un momento en que no podrás avanzar y necesitarás macros muy complejas y de difícil actualización para lograr lo quieres.

Empieza por poner todos los datos en una hoja a renglón seguido, por ejemplo:

         A                    B                   C                    D               E         F

1    Paciente       Fecha            Número        Unidades      etc       etc

2    Dante           11sep2015           1                50 mg

3    Dante           11sep2015           2                100mg

4    Dante           11sep2015           3                  75mg

5    etc

...

Y de esta base de datos puedes llenar cualquier formato.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas