Foros del Web » Soporte técnico » Ofimática »

Macro Excel Ayuda

Estas en el tema de Macro Excel Ayuda en el foro de Ofimática en Foros del Web. Hola amigos, les cuento quiero hacer una macro en excel, en donde me posicione en cualquier celda del excel(obvio que tendra un dato) y que ...
  #1 (permalink)  
Antiguo 16/04/2008, 13:00
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Antigüedad: 17 años
Puntos: 0
Exclamación Macro Excel Ayuda

Hola amigos, les cuento quiero hacer una macro en excel, en donde me posicione en cualquier celda del excel(obvio que tendra un dato) y que la macro tome lo que dice esa celda y la copie 15 veces para abajo y luego el cursor me quede posicionado 5 celdas mas abajo de donde copio el ultimo dato.

espero me entiendan gracias
  #2 (permalink)  
Antiguo 16/04/2008, 14:46
 
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Re: Macro Excel Ayuda

Hola amigos, les cuento quiero hacer una macro en excel, en donde me posicione en cualquier celda del excel(obvio que tendra un dato) y que la macro tome lo que dice esa celda y la copie 15 veces para abajo y luego el cursor me quede posicionado 5 celdas mas abajo de donde copio el ultimo dato.

espero me entiendan gracias.

Intentalo con esto. la clave creo que es utilizar el resize y offset:

(supongo que en a1 tienes por ejemplo el valor 1):

Sub macro()





Cells(1, 1).Copy Destination:=Range("A2:A16") ' se copia el contenido de A1 en el rango de destino



Cells(1, 1).Select ' se selecciona de nuevo la celda con contenido

ActiveCell.Offset(0, 5).Select ' se desplaza cinco columnas a la derecha manteniendo la fila (te puedes ahorrar el 0, )

End Sub


Si el rango "a2:a16" necesitas hacerlo más flexible tanto en filas como en columnas se puede hacer. continua con este correo o abre un nuevo tema si lo necesitas,

Un saludo y espero que te haya ayudado
  #3 (permalink)  
Antiguo 16/04/2008, 14:55
 
Fecha de Ingreso: abril-2008
Mensajes: 27
Antigüedad: 16 años
Puntos: 0
Re: Macro Excel Ayuda

perdona:

también puedes hacer lo siguiente (te funcionara para cualquier archivo en el que tengas datos en filas y/o columnas):

Sub macro()





Cells(1, 1).Copy Destination:=Range("A2:A16") ' se copia el contenido de A1 en el rango de destino



FinalRow = Cells(65536, 1).End(xlUp).Row

Range("A" & FinalRow + 5).Select
End Sub
  #4 (permalink)  
Antiguo 17/04/2008, 04:54
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Antigüedad: 17 años
Puntos: 0
Re: Macro Excel Ayuda

gracias, pero en realidad lo que quiero es que no copie los datos solo de la celda 1,1, quiizas el otro dato q tengo que copiar esta en L:30 y quizas el otro esta en T:20, entonces lo que quiero que copie esos datos para abajo, como veran la celda tiene que ser indistinta, que no siempre empiece arranque de a:1, entienden, yo me posiciono en cualquier celda y de donde me posicione me copie ese dato para abajo, me podrian ayudar

gracias
  #5 (permalink)  
Antiguo 17/04/2008, 09:31
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Macro Excel Ayuda

Hola,

Puedes basarte en el código que te explican, pero para que la operación que quieres se haga sin importar la celda donde te ubiques, debes capturar primero la posición de la celda donde estas posicionado, esto lo logras haciendo algo como esto:

Fila = activecell.row
Columna = activecell.column

y luego seleccionas tu rango para copiar el dato así:

Rango = Range(cells(Fila, Columna), cells(Fila + 15, Columna))

luego utilizas la variable y te debe funcionar, y haciendo referencia a lo que te dijeron antes, seria algo por el estilo

Cells(Fila, Columna).Copy Destination:=Range(Rango)

Espero haberte ayudado!!!

Juan Miguel

Última edición por juan_miguel; 17/04/2008 a las 10:07
  #6 (permalink)  
Antiguo 17/04/2008, 10:41
 
Fecha de Ingreso: marzo-2007
Mensajes: 13
Antigüedad: 17 años
Puntos: 0
Re: Macro Excel Ayuda

lo intente , esto es lo que hice pero me da error

'
Fila = ActiveCell.Row
Columna = ActiveCell.Column
Rango = Range(Cells(Fila, Columna), Cells(Fila + 15, Columna))
Cells(Fila, Columna).Copy Destination:=Range(Rango)

por que puede ser
  #7 (permalink)  
Antiguo 18/04/2008, 08:54
 
Fecha de Ingreso: septiembre-2007
Mensajes: 18
Antigüedad: 16 años, 7 meses
Puntos: 0
Re: Macro Excel Ayuda

Hola win14,

Para lograr que funcione como quieres debes implementar un sub Worksheet_SelectionChange en la hoja que quieres que funcione de esa manera,
te coloco el código que construí para ello, a mi me funciona bien...

Public ok
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If ok = Empty Then
fila = ActiveCell.Row
columna = ActiveCell.Column
Selection.Copy
ok = 1
Range(Cells(fila, columna), Cells(fila + 15, columna)).Select
End If
If ok = 1 Then
ActiveSheet.Paste
ok = 2
Selection.End(xlDown).Select
End If
If ok = 2 Then
ok = 3
ActiveCell.Offset(5, 0).Select
End If
If ok = 3 Then
ok = 4
ActiveSheet.Paste
Application.CutCopyMode = False
End If
If ok = 4 Then
End
End If
End Sub

La variable ok lo unico que hace es bloquear el paso a que se ejecuten algunas líneas de código que en cierto momento ya no son necesarias que se ejecuten, puesto que cada vez que cambies de celda en la hoja donde se encuentre este procedimiento, dicho procedimiento se ejecutará nuevamente, ese es el porque de la variable ok.

Espero esto sea lo que necesitas, aunque quizas necesites hacerle algunas modificaciones adicionales para que funcione como lo quieres,
por ejemplo, debes evitar que se ejecute el procedimiento si la celda en donde te paras esta vacia.

Un saludo!!

Juan Miguel
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:43.