problemas al insertar filas por filas

28/06/2006 - 15:28 por Isaac | Informe spam
Estimados amigos:

el siguiente codigo:

Sub Inserta_x_filas()
Windows("centrales.xls").Activate ' ADICIONADA
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate ' ADICIONADA
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub


me funciona pero pega los valores de "datos_cent" con formulas, existe
alguna manera de que se peguen como valores absolutos, sin formula, lo unico
que puede hacer fue lo siguiente:


Sub Inserta_x_filas()
Windows("centrales.xls").Activate
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate
With ThisWorkbook.Worksheets("hoja1").Range("a3")
.Insert xlDown
End With
Windows("centrales.xls").Activate
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate
With ThisWorkbook.Worksheets("hoja1").Range("a3")
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub


donde primero se copia el bloque y abre el espacio en filas que se requiere
pero con formulas en algunas celdas, la segunda parte vuelve a copiar y
encima con pastespecial en esos mismos espacios pero en solo los valores
abosolutos, es decir que varias filas de "datos_cent" tienen formulas
(a1*a5) y lo que deseo es que pase solo el valor y no la formula.

Se puede simplificar el codigo anterior

Gracias de nuevo
 

Leer las respuestas

#1 Isaac
28/06/2006 - 20:08 | Informe spam
Gracias Hector Miguel:

Funciona de maravilla, una pregunta solamente que perfil profesional tienes,
o como has llegado a saber tanto de vba, existe algun curso formal sobre
este tema. Me interesa mucho aprender sobre este tema.

Gracias y Suerte

"Héctor Miguel" escribió en el mensaje
news:%
hola, Isaac !

1) solo comentarte que [generalmente] no es necesario 'andar brincando
entre libros y hojas para usar sus objetos :))
puedes hacer una referencia 'completa' al libro/hoja y rangos que
necesitas usar SIN 'tener que' des/re/activarlos [p.e.]
ActiveWorkbook [obviamente] se refiere al libro que se encuentra en
la ventana activa de la aplicacion
ThisWorkbook [obviamente] se refiere al libro que contiene el
modulo de codigo con el procedimiento 'en ejecucion'
Workbooks("libro X") es una referencia al 'libro x' que [obviamente]
se encuentra abierto en la sesion

2) prueba con las siguientes modificaciones a la propuesta original...
Sub Inserta_x_filas()
Dim Filas As Byte, Cols As Byte, Datos
With Workbooks("centrales.xls").Worksheets("hoja1").Range("datos_cent")
Filas = .Rows.Count
Cols = .Columns.Count
Datos = .Value
End With
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Resize(Filas).EntireRow.Insert
.Offset(-Filas).Resize(Filas, Cols).Value = Datos
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub

si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.

__ la consulta original __
el siguiente codigo:
Sub Inserta_x_filas()
Windows("centrales.xls").Activate ' ADICIONADA
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate ' ADICIONADA
With ThisWorkbook.Worksheets("hoja1").Range("a2")
.Insert xlDown
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub
me funciona pero pega los valores de "datos_cent" con formulas
existe alguna manera de que se peguen como valores absolutos, sin formula
lo unico que puede hacer fue lo siguiente:
Sub Inserta_x_filas()
Windows("centrales.xls").Activate
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate
With ThisWorkbook.Worksheets("hoja1").Range("a3")
.Insert xlDown
End With
Windows("centrales.xls").Activate
ActiveWorkbook.Worksheets("hoja1").Range("datos_cent").EntireRow.Copy
Windows("matriz.xls").Activate
With ThisWorkbook.Worksheets("hoja1").Range("a3")
.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
.Sort Key1:=.Cells(1), Order1:=xlAscending, Header:=xlYes
End With
End Sub
donde primero se copia el bloque y abre el espacio en filas que se
requiere pero con formulas en algunas celdas
la segunda parte vuelve a copiar y encima con pastespecial en esos mismos
espacios pero en solo los valores abosolutos
es decir que varias filas de "datos_cent" tienen formulas (a1*a5) y lo
que deseo es que pase solo el valor y no la formula.
Se puede simplificar el codigo anterior




Preguntas similares