INSERTAR FILA (MACRO) CON LAS FORMULAS DE LA FILA QUE LE ANTECEDE

20/06/2006 - 17:11 por CARLOS CARNERO | Informe spam
INSERTAR FILA (MACRO) CON LAS FORMULAS DE LA FILA QUE LE ANTECEDE

Muy buena a todos, un servicio: En Excel 97 tengo una hoja protegida
donde las columnas (2) que contienen formulas están protegidas todas
esas celdas y las otras columnas no lo están. Pero deseo insertar fila
(s) de manera que copie sólo las formulas de la fila que le antecede
(podría ser una a una cada fila), de manera que siempre mantenga
protegida a las columnas que contienen dichas formulas.

He intentado con una macro, pero lamentablemente me realiza la
operación en la celda donde hice la macro, pero lo que yo deseo es
donde se ubique el cursor, ahí realizar dicha macro. Además de ello
cuando vuelvo a aperturar el libro, la macro pide la contraseña para
desprotegerla.

Les pido por favor me auxilien con este tema y agradeciendo de antemano
su atención.

Saludos desde el Perú,

P.D. Esta es la sintaxis:

Sub Imagen538_AlHacerClic()
'
' Imagen538_AlHacerClic Macro
' Macro grabada el 20/06/2006 por
'

'
Range("D27").Select
ActiveSheet.Unprotect
Selection.EntireRow.Insert
Range("A26:L26").Select
Range("L26").Activate
Selection.Copy
Range("A27").Select
ActiveSheet.Paste
Selection.PasteSpecial Paste:=xlFormulas, Operation:=xlNone,
SkipBlanks:= _
False, Transpose:=False
Range("B27:I27").Select
Application.CutCopyMode = False
Selection.ClearContents
Range("A26").Select
Selection.AutoFill Destination:=Range("A26:A29"),
Type:=xlFillDefault
Range("A26:A29").Select
Range("B27").Select
ActiveSheet.Protect DrawingObjects:=True, Contents:=True,
Scenarios:=True
End Sub

Preguntas similare

Leer las respuestas

#6 Héctor Miguel
20/06/2006 - 23:09 | Informe spam
hola, Carlos !

... a excepcion que la columna que debe sumar es la "A" y no la "B"...
... A, la primera es una sumatoria condicional y es en donde de operar la macro
=SI(B18<>"",A17+1,"")
y luego deseas 'limpiar' las columnas -supongo- NO-formulas: 'B:I' -?-
y que 'inluya' hasta la fila 29 [o la que vaya hasta 'equis'-momento] -???-


Asi que incluya hasta n filas [...]



si alcanzo a 'interpretar' [bien] el sentido de la formula de 'auto-numeracion' an la columna 'A'... -?-

-> podrias 'aligerar' el codigo sin la necesidad del 'AutoFill'
[ya que no intervendria la 'perdida' de la referencia en la formula por la fila 'insertada']
y la 'carga' de n_filas con la funcion si-condicional para la auto-numeracion... SI...

a) cambias la formula +/- a la siguiente -> suponiendo que la primer celda 'auto-numerable' fuera 'A7']...
=contara($b$7:b7) [y la copias/arrastras/... hasta las n_filas 'ocupadas actualmente'] :)) Y...

b) 'recortas' las lineas de codigo [que inserta una fila] +/- a las siguientes...
Sub Imagen538_AlHacerClic()
With ActiveCell
.Offset(-1).EntireRow.Copy
Cells(.Row, 1).Insert xlDown
Cells(.Row - 1, 2).Resize(, 8).ClearContents
End With
End Sub

si cualquier duda... 'algo ma ha fallado'... [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#7 CARLOS CARNERO
20/06/2006 - 23:44 | Informe spam
Hector una vez más muy agradecido por tu atención: veamos. Si utilizo
la última sintaxis que me has descrito vuelvo al punto donde se copia
efectivamente la formula de la fila anterior y aún se mantiene
congelada la fila que le continua. Usando la formula de CONTARA esto
sólo va ha estar reflejado en una sola celda, cuando lo que busco es
que el insertar fila sea en la celda activa. Creo que la anterior
sintaxis era la más aproximada a excepción que esta sumatoria no
debería darse en la columna B, sino en la A.

Gracias,

Carlos Carnero G.


Héctor Miguel ha escrito:

hola, Carlos !

> ... a excepcion que la columna que debe sumar es la "A" y no la "B"...
> ... A, la primera es una sumatoria condicional y es en donde de operar la macro
> =SI(B18<>"",A17+1,"")
>> y luego deseas 'limpiar' las columnas -supongo- NO-formulas: 'B:I' -?-
>> y que 'inluya' hasta la fila 29 [o la que vaya hasta 'equis'-momento] -???-
> Asi que incluya hasta n filas [...]

si alcanzo a 'interpretar' [bien] el sentido de la formula de 'auto-numeracion' an la columna 'A'... -?-

-> podrias 'aligerar' el codigo sin la necesidad del 'AutoFill'
[ya que no intervendria la 'perdida' de la referencia en la formula por la fila 'insertada']
y la 'carga' de n_filas con la funcion si-condicional para la auto-numeracion... SI...

a) cambias la formula +/- a la siguiente -> suponiendo que la primer celda 'auto-numerable' fuera 'A7']...
=contara($b$7:b7) [y la copias/arrastras/... hasta las n_filas 'ocupadas actualmente'] :)) Y...

b) 'recortas' las lineas de codigo [que inserta una fila] +/- a las siguientes...
Sub Imagen538_AlHacerClic()
With ActiveCell
.Offset(-1).EntireRow.Copy
Cells(.Row, 1).Insert xlDown
Cells(.Row - 1, 2).Resize(, 8).ClearContents
End With
End Sub

si cualquier duda... 'algo ma ha fallado'... [o informacion adicional]... comentas ?
saludos,
hector.
Respuesta Responder a este mensaje
#8 Héctor Miguel
21/06/2006 - 08:32 | Informe spam
hola, Caros !

... vuelvo al punto donde se copia efectivamente la formula de la fila anterior y aún se mantiene congelada la fila que le continua.
... la formula de CONTARA... va ha estar reflejado en una sola celda... lo que busco es que el insertar fila sea en la celda activa.
... la anterior sintaxis era la mas aproximada a excepcion que esta sumatoria no deberia darse en la columna B, sino en la A.



hay 'algo' [como] que no acabo de entender :-(

1) el codigo expuesto [punto b anterior], al final de cuentas, lo que hace es [y segun yo, es lo que solicitas ?]...
a) inserta una fila EN [o a partir de] -> la celda activa
b) copia [en la fila insertada] la fila inmediata superior/anterior [con todo y formulas]
c) 'limipa' [en la fila insertada] las columnas 'B:I'

2) la formula de 'auto-numeracion' => en la columna 'A' [segun el punto a anterior]...
-> 'mantiene' el orden consecutivo de numeracion -> en cuanto escribes 'algo' en su columna 'B'
-> recuerda que acaba de ser 'limpiado' el rango de las columnas 'B:I' [lo cual evita la necesidad del 'AutoFill' por codigo]
-> si NO quieres 'esperarte' a poner algo en la columna 'B'... cambia la formula propuesta [desde la celda inicial] p.e.
de: -> =contara($b$7:b7)
a. -> =filas($b$7:b7)

si algo de lo que estoy suponiendo [y probando] no esta de acuerdo con alguna otra 'realidad'...
comentas algun detalle mas... 'significativo' ?
saludos,
hector.

__ la consulta anterior __
> ... a excepcion que la columna que debe sumar es la "A" y no la "B"...
> ... A, la primera es una sumatoria condicional y es en donde de operar la macro
> =SI(B18<>"",A17+1,"")
>> y luego deseas 'limpiar' las columnas -supongo- NO-formulas: 'B:I' -?-
>> y que 'inluya' hasta la fila 29 [o la que vaya hasta 'equis'-momento] -???-
> Asi que incluya hasta n filas [...]

si alcanzo a 'interpretar' [bien] el sentido de la formula de 'auto-numeracion' an la columna 'A'... -?-

-> podrias 'aligerar' el codigo sin la necesidad del 'AutoFill'
[ya que no intervendria la 'perdida' de la referencia en la formula por la fila 'insertada']
y la 'carga' de n_filas con la funcion si-condicional para la auto-numeracion... SI...

a) cambias la formula +/- a la siguiente -> suponiendo que la primer celda 'auto-numerable' fuera 'A7']...
=contara($b$7:b7) [y la copias/arrastras/... hasta las n_filas 'ocupadas actualmente'] :)) Y...

b) 'recortas' las lineas de codigo [que inserta una fila] +/- a las siguientes...
Sub Imagen538_AlHacerClic()
With ActiveCell
.Offset(-1).EntireRow.Copy
Cells(.Row, 1).Insert xlDown
Cells(.Row - 1, 2).Resize(, 8).ClearContents
End With
End Sub
Respuesta Responder a este mensaje
#9 CARLOS CARNERO
21/06/2006 - 16:44 | Informe spam
Hola Hector: Antetodo mil disculpas quizas por no explicarme bien.
Explicando de otro modo. Tengo entre las columnas A a la K los
siguientes encabezados respectivamente: ITEM CODIGO GENERO DEL
ARCHIVO TIPO DE DCMTO AÑO MES Del Al UBICACIÓN OBSEVACIONES IDEM.
Como se puede apreciar es una base de datos de un Archivo. Entonces en
la columna A (la del Item) cada fila representa un número correlativo
ascendente con respecto a la fila inferior (Ej. Fila 5= 2, Fila 6=3) y
para ello uso esta formula condicional =SI(B5<>"",A4+1,"") siendo A4=1.


Este es el archivo

ITEM CODIGO GENERO DEL ARCHIVO TIPO DE
DCMTO AÑO MES Del Al UBICACIÓN OBSEVACIONES IDEM
2 B014.03.0001 VENTAS BOLETA 014 2003 JUNIO 0000010 ALCANFORES
ACTIVO 2
3 B017.02.0001 VENTAS BOLETA
017 2002-2003 AGOSTO/DICIEMBRE 0000001 0000211 ALCANFORES ACTIVO 3
4 B017.04.0001 VENTAS BOLETA
017 2004 ENERO/DICIEMBRE 0000212 0000387 ALCANFORES ACTIVO 4
ALCANFORES ACTIVO
5 B017.05.0001 VENTAS BOLETA
017 2005 ENERO/DICIEMBRE 0000389 0000679 ALCANFORES ACTIVO FALTA 388 5
6 B017.06.0001 VENTAS BOLETA
017 2005-2006 NOV/ABR 0000680 0000780 ALCANFORES ACTIVO 6

Finalmente lo que debe operar la macro es que cuando inserte una fila
autosume + 1, el valor del item anterior. Y la fila subsiguiente
continue con el correlativo correspondiente.

Gracias y saludos desde el Perú,

P.D. Trate de enviarte el archivo pero al parecer revoto. Si no tienes
ningún inconveniente y te es posible enviame tu correo a



Héctor Miguel ha escrito:

hola, Caros !

> ... vuelvo al punto donde se copia efectivamente la formula de la fila anterior y aún se mantiene congelada la fila que le continua.
> ... la formula de CONTARA... va ha estar reflejado en una sola celda... lo que busco es que el insertar fila sea en la celda activa.
> ... la anterior sintaxis era la mas aproximada a excepcion que esta sumatoria no deberia darse en la columna B, sino en la A.

hay 'algo' [como] que no acabo de entender :-(

1) el codigo expuesto [punto b anterior], al final de cuentas, lo que hace es [y segun yo, es lo que solicitas ?]...
a) inserta una fila EN [o a partir de] -> la celda activa
b) copia [en la fila insertada] la fila inmediata superior/anterior [con todo y formulas]
c) 'limipa' [en la fila insertada] las columnas 'B:I'

2) la formula de 'auto-numeracion' => en la columna 'A' [segun el punto a anterior]...
-> 'mantiene' el orden consecutivo de numeracion -> en cuanto escribes 'algo' en su columna 'B'
-> recuerda que acaba de ser 'limpiado' el rango de las columnas 'B:I' [lo cual evita la necesidad del 'AutoFill' por codigo]
-> si NO quieres 'esperarte' a poner algo en la columna 'B'... cambia la formula propuesta [desde la celda inicial] p.e.
de: -> =contara($b$7:b7)
a. -> =filas($b$7:b7)

si algo de lo que estoy suponiendo [y probando] no esta de acuerdo con alguna otra 'realidad'...
comentas algun detalle mas... 'significativo' ?
saludos,
hector.

__ la consulta anterior __
> > ... a excepcion que la columna que debe sumar es la "A" y no la "B"...
> > ... A, la primera es una sumatoria condicional y es en donde de operar la macro
> > =SI(B18<>"",A17+1,"")
> >> y luego deseas 'limpiar' las columnas -supongo- NO-formulas: 'B:I' -?-
> >> y que 'inluya' hasta la fila 29 [o la que vaya hasta 'equis'-momento] -???-
> > Asi que incluya hasta n filas [...]
>
> si alcanzo a 'interpretar' [bien] el sentido de la formula de 'auto-numeracion' an la columna 'A'... -?-
>
> -> podrias 'aligerar' el codigo sin la necesidad del 'AutoFill'
> [ya que no intervendria la 'perdida' de la referencia en la formula por la fila 'insertada']
> y la 'carga' de n_filas con la funcion si-condicional para la auto-numeracion... SI...
>
> a) cambias la formula +/- a la siguiente -> suponiendo que la primer celda 'auto-numerable' fuera 'A7']...
> =contara($b$7:b7) [y la copias/arrastras/... hasta las n_filas 'ocupadas actualmente'] :)) Y...
>
> b) 'recortas' las lineas de codigo [que inserta una fila] +/- a las siguientes...
> Sub Imagen538_AlHacerClic()
> With ActiveCell
> .Offset(-1).EntireRow.Copy
> Cells(.Row, 1).Insert xlDown
> Cells(.Row - 1, 2).Resize(, 8).ClearContents
> End With
> End Sub
Respuesta Responder a este mensaje
#10 CARLOS CARNERO
22/06/2006 - 17:16 | Informe spam
Hola Hector: Disculpa mi insistencia pero no logro aún mi objetivo.
Por favor dame una mano con este tema.

Gracias,

Carlos Carnero Gálvez


CARLOS CARNERO ha escrito:

Hola Hector: Antetodo mil disculpas quizas por no explicarme bien.
Explicando de otro modo. Tengo entre las columnas A a la K los
siguientes encabezados respectivamente: ITEM CODIGO GENERO DEL
ARCHIVO TIPO DE DCMTO AÑO MES Del Al UBICACIÓN OBSEVACIONES IDEM.
Como se puede apreciar es una base de datos de un Archivo. Entonces en
la columna A (la del Item) cada fila representa un número correlativo
ascendente con respecto a la fila inferior (Ej. Fila 5= 2, Fila 6=3) y
para ello uso esta formula condicional =SI(B5<>"",A4+1,"") siendo A4=1.


Este es el archivo

ITEM CODIGO GENERO DEL ARCHIVO TIPO DE
DCMTO AÑO MES Del Al UBICACIÓN OBSEVACIONES IDEM
2 B014.03.0001 VENTAS BOLETA 014 2003 JUNIO 0000010 ALCANFORES
ACTIVO 2
3 B017.02.0001 VENTAS BOLETA
017 2002-2003 AGOSTO/DICIEMBRE 0000001 0000211 ALCANFORES ACTIVO 3
4 B017.04.0001 VENTAS BOLETA
017 2004 ENERO/DICIEMBRE 0000212 0000387 ALCANFORES ACTIVO 4
ALCANFORES ACTIVO
5 B017.05.0001 VENTAS BOLETA
017 2005 ENERO/DICIEMBRE 0000389 0000679 ALCANFORES ACTIVO FALTA 388 5
6 B017.06.0001 VENTAS BOLETA
017 2005-2006 NOV/ABR 0000680 0000780 ALCANFORES ACTIVO 6

Finalmente lo que debe operar la macro es que cuando inserte una fila
autosume + 1, el valor del item anterior. Y la fila subsiguiente
continue con el correlativo correspondiente.

Gracias y saludos desde el Perú,

P.D. Trate de enviarte el archivo pero al parecer revoto. Si no tienes
ningún inconveniente y te es posible enviame tu correo a



Héctor Miguel ha escrito:

> hola, Caros !
>
> > ... vuelvo al punto donde se copia efectivamente la formula de la fila anterior y aún se mantiene congelada la fila que le continua.
> > ... la formula de CONTARA... va ha estar reflejado en una sola celda... lo que busco es que el insertar fila sea en la celda activa.
> > ... la anterior sintaxis era la mas aproximada a excepcion que esta sumatoria no deberia darse en la columna B, sino en la A.
>
> hay 'algo' [como] que no acabo de entender :-(
>
> 1) el codigo expuesto [punto b anterior], al final de cuentas, lo que hace es [y segun yo, es lo que solicitas ?]...
> a) inserta una fila EN [o a partir de] -> la celda activa
> b) copia [en la fila insertada] la fila inmediata superior/anterior [con todo y formulas]
> c) 'limipa' [en la fila insertada] las columnas 'B:I'
>
> 2) la formula de 'auto-numeracion' => en la columna 'A' [segun el punto a anterior]...
> -> 'mantiene' el orden consecutivo de numeracion -> en cuanto escribes 'algo' en su columna 'B'
> -> recuerda que acaba de ser 'limpiado' el rango de las columnas 'B:I' [lo cual evita la necesidad del 'AutoFill' por codigo]
> -> si NO quieres 'esperarte' a poner algo en la columna 'B'... cambia la formula propuesta [desde la celda inicial] p.e.
> de: -> =contara($b$7:b7)
> a. -> =filas($b$7:b7)
>
> si algo de lo que estoy suponiendo [y probando] no esta de acuerdo con alguna otra 'realidad'...
> comentas algun detalle mas... 'significativo' ?
> saludos,
> hector.
>
> __ la consulta anterior __
> > > ... a excepcion que la columna que debe sumar es la "A" y no la "B"...
> > > ... A, la primera es una sumatoria condicional y es en donde de operar la macro
> > > =SI(B18<>"",A17+1,"")
> > >> y luego deseas 'limpiar' las columnas -supongo- NO-formulas: 'B:I' -?-
> > >> y que 'inluya' hasta la fila 29 [o la que vaya hasta 'equis'-momento] -???-
> > > Asi que incluya hasta n filas [...]
> >
> > si alcanzo a 'interpretar' [bien] el sentido de la formula de 'auto-numeracion' an la columna 'A'... -?-
> >
> > -> podrias 'aligerar' el codigo sin la necesidad del 'AutoFill'
> > [ya que no intervendria la 'perdida' de la referencia en la formula por la fila 'insertada']
> > y la 'carga' de n_filas con la funcion si-condicional para la auto-numeracion... SI...
> >
> > a) cambias la formula +/- a la siguiente -> suponiendo que la primer celda 'auto-numerable' fuera 'A7']...
> > =contara($b$7:b7) [y la copias/arrastras/... hasta las n_filas 'ocupadas actualmente'] :)) Y...
> >
> > b) 'recortas' las lineas de codigo [que inserta una fila] +/- a las siguientes...
> > Sub Imagen538_AlHacerClic()
> > With ActiveCell
> > .Offset(-1).EntireRow.Copy
> > Cells(.Row, 1).Insert xlDown
> > Cells(.Row - 1, 2).Resize(, 8).ClearContents
> > End With
> > End Sub
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida