Excel - Macro en excel

 
Vista:

Macro en excel

Publicado por iuliano (6 intervenciones) el 17/02/2010 14:35:46
Hola a todos.
Tengo una macro creada en un excel con varias tablas y formulas, que lo que hace es coge valores de un rango de una tabla Range("B57:D57") y me lo copia en otra tabla que crea unos resultados según unas fórmulas en otros rangos de una tabla. Esos resultados cada rango de 3 me los va copiando sucesivamente en posicones de otras tablas, hasta ahi bien.
Pero lo que quiero es que me coja automáticamente el siguiente rango de la primera tabla es decir el range("B58:D58"), me lo copie en la tabla de resultados y me vaya copiando los rangos de resultado en las siguientes posiciones de las distintas tablas.
Yo lo estoy haciendo cambiando a mano el número del rango en cada paso, asi que tengo una tabla con 18 filas pues esta puesta 18 veces la función.
Os pongo mi macro y si alguién me puede ayudar os lo agradecería.
Un saludo.
Sub Seleccion()
'
' Seleccion Macro
'
' Acceso directo: CTRL+q
'
' ActiveWindow.SmallScroll Down:=-15
' primera
Range("B57:D57").Select
Selection.Copy
Range("B53").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E53:G53").Select
Application.CutCopyMode = False
Selection.Copy
Range("E57").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H53:J53").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=21
Range("E79").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-15
Range("K53:M53").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=42
Range("E100").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-42
ActiveWindow.SmallScroll ToRight:=5
Range("N53:P53").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.SmallScroll Down:=60
Range("E121").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("q53:s53").Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.SmallScroll Down:=60
Range("E143").Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-60
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

RE:Macro en excel

Publicado por jcs (494 intervenciones) el 17/02/2010 21:03:40
Muy buenas,

Lo que tienes que hacer es meter todo lo que tienes dentro de un bucle y poner los rangos referenciados a los valores que vaya tomando la variable que va cambiando según se va ejecutando. Más o menos quedaría así (sólo te he puesto la primera acción)

Sub Seleccion()
For i = 0 To 40
Range("B" & 57 + i & ":D" & 57 + i).Select
Selection.Copy
Range("B" & 53 + i).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False



Next
Application.CutCopyMode = False
End Sub

Ya dirás si es lo que quieres.

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro en excel

Publicado por iuliano (6 intervenciones) el 18/02/2010 10:13:14
Gracias por contestar.

Pero no funciona, yo lo que quiero es que coja el primer rango me lo pegue en otro rango y eso me da unos valores en tablas, esos distintos valores me los copie y pegue en distintas tablas, después me coja otro rango de valores me los pegue en el mismo sitio y otra vez los valores que me da los vaya pegando en las distintas tablas.
Te muestro como me ha quedado.

Sub Seleccion()
'
' Seleccion Macro
'
' Acceso directo: CTRL+q
'
' ActiveWindow.SmallScroll Down:=-15
' primera
For i = 0 To 18
Range("B" & 57 + i & ":D" & 57 + i).Select
Selection.Copy
Range("B" & 53).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("E" & 53 + i & ":G" & 53 + i).Select
Application.CutCopyMode = False
Selection.Copy
Range("E" & 57).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("H" & 53 + i & ":J" & 53 + i).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=21
Range("E" & 79).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-15
Range("K" & 53 + i & ":M" & 53 + i).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll Down:=42
Range("E" & 100).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
ActiveWindow.SmallScroll Down:=-42
ActiveWindow.SmallScroll ToRight:=5
Range("N" & 53 + i & ":P" & 53 + i).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.SmallScroll Down:=60
Range("E" & 121).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Range("q" & 53 + i & ":s" & 53 + i).Select
Application.CutCopyMode = False
Selection.Copy
ActiveWindow.SmallScroll ToRight:=-5
ActiveWindow.SmallScroll Down:=60
Range("E" & 143).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
' ActiveSheet.Paste
ActiveWindow.SmallScroll Down:=-60

Next
Application.CutCopyMode = False
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro en excel

Publicado por iuliano (6 intervenciones) el 18/02/2010 11:53:10
Gracias ya lo he solucionado.

Pero tengo una consulta, como puedo hacer para que los rangos me varien según añado celdas al excel, por ejemplo
Range("B" & 57 + i & ":D" & 57 + i).Select
Range("B" & 53).Select

Si añado una fila al excel arriba de la tabla el rango me variara ya no sería B57:D57 y que se pegue en B53, esto se podría hacer para que me modificar automatico los rangos.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Macro en excel

Publicado por jcs (494 intervenciones) el 18/02/2010 22:00:19
Muy buenas,

pues si tienes algún dato en la fila que la identifique, puedes hacer una búsqueda para determinar el número de fila. También puedes hacer que al inicio de la macro te pida el número, podría quedar algo así:

Sub pp()
fila = InputBox("introduce la fila de inicio")
Range("B" & fila + i & ":D" & fila + i).Select
Range("B" & fila - 4).Select

End Sub

No sé si será lo que quieres.

Un saludo. Juanjo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro en excel

Publicado por iuliano (6 intervenciones) el 19/02/2010 10:02:50
Buenas.

Lo que me has puesto, lo he pegado antes del for, o lo tengo que poner donde tenía el for, donde le indicaba la primera fila que copiaba no??

Un saludo y gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro en excel

Publicado por iuliano (6 intervenciones) el 19/02/2010 10:21:12
Si el input de introducir nº de fila lo pongo dentro del for, entonces me va pidiendo el nº de fila has ta que se acabe el bucle.

Yo lo que quiero es indicarle la fila donde tiene que empezar a copiar y que todo lo demás se vaya haciendo automatico.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Macro en excel

Publicado por iuliano (6 intervenciones) el 19/02/2010 14:35:27
Conseguido!!

Muchas gracias por tu ayuda, te lo agradezco mucho.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar