macro para copiar datos a otra hoja

05/11/2007 - 02:03 por charly_76 | Informe spam
hola saludos me llamo juan carlos

ojala me puedan ayudar tengo un libro de excel
donde se ingresan datos de la celda A1 hasta G1 en la hoja1
unicamente esas celdas. y necesito una macro que cuando
escriban en la ultima celda "G1" esa informacion se copie
ala hoja 2 en el mismo orden (solo valores) y que una ves
copiado las celdas originales de la hoja1 se limpien para ingresar
nuevos datos y esos datos se copien abajo de los anteriores en la
hoja2 y asi sucesivamente hasta tener una lista la idea de esto es
que la persona que ingresa sus datos no pueda ver los datos de la
persona anterior ya que la hoja 2 estaria oculta

ojala que alguien me pueda ayudar y muchas gracias

Preguntas similare

Leer las respuestas

#1 Ivan
05/11/2007 - 02:34 | Informe spam
hola,

una macro que cuando
escriban en la ultima celda "G1" esa informacion se copie
ala hoja 2 en el mismo orden (solo valores) y que una ves
copiado las celdas originales de la hoja1 se limpien para ingresar
nuevos datos y esos datos se copien abajo de los anteriores en la
hoja2 y asi sucesivamente



suponiendo que la hoja1 se llama "Hoja1" y la 2 "Hoja2", prueba a ver
si te vale algo asi:

en el modulo de la hoja (click secundario en la pestaña de la hoja =>
Ver codigo) pega esta macro, vuelve a excel y haz pruebas a ver si es
lo que buscas

'en el modulo de la hoja (OJO que no estes usando ya el evento
Change)
'pega desde aqui
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
If Not Intersect(Target, [g1]) Is Nothing Then
With Hoja2
Set celda = IIf(.[a1] = "", .[a1], .
[a65536].End(xlUp).Offset(1))
[a1:g1].Copy
celda.PasteSpecial xlPasteValues
Application.EnableEvents = False
[a1:g1].ClearContents
Application.EnableEvents = True
[a1].Select
Set celda = Nothing
End With
End If
End Sub
' pega hasta aqui

a ver si te ayuda

un saludo
Ivan
Respuesta Responder a este mensaje
#2 charly_76
06/11/2007 - 18:12 | Informe spam
hola Ivan antes que nada gracias por tu ayuda

segui los pasos que me indicaste en un libro nuevo pero en cuanto
ingreso cualquier valor en cualquier celda de la hoja1 me manda un error
de compilacion: error de sintaxis
no se que este haciendo mal mi excel es 2003

"Ivan" escribió:

hola,

>una macro que cuando
> escriban en la ultima celda "G1" esa informacion se copie
> ala hoja 2 en el mismo orden (solo valores) y que una ves
> copiado las celdas originales de la hoja1 se limpien para ingresar
> nuevos datos y esos datos se copien abajo de los anteriores en la
> hoja2 y asi sucesivamente

suponiendo que la hoja1 se llama "Hoja1" y la 2 "Hoja2", prueba a ver
si te vale algo asi:

en el modulo de la hoja (click secundario en la pestaqa de la hoja =>
Ver codigo) pega esta macro, vuelve a excel y haz pruebas a ver si es
lo que buscas

'en el modulo de la hoja (OJO que no estes usando ya el evento
Change)
'pega desde aqui
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
If Not Intersect(Target, [g1]) Is Nothing Then
With Hoja2
Set celda = IIf(.[a1] = "", .[a1], .
[a65536].End(xlUp).Offset(1))
[a1:g1].Copy
celda.PasteSpecial xlPasteValues
Application.EnableEvents = False
[a1:g1].ClearContents
Application.EnableEvents = True
[a1].Select
Set celda = Nothing
End With
End If
End Sub
' pega hasta aqui

a ver si te ayuda

un saludo
Ivan


Respuesta Responder a este mensaje
#3 Ivan
06/11/2007 - 22:34 | Informe spam
hola Charli


en cuanto
ingreso cualquier valor en cualquier celda de la hoja1 me manda un error
de compilacion: error de sintaxis



disculpame, pero creo que es culpa mia por no preverlo y avisarte (o
evitarlo)

si no me equivoco se debe a una linea que se ha 'roto/truncado' en el
editor del foro. Prueba a pegarlo asi:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
If Not Intersect(Target, [g1]) Is Nothing Then
With Hoja2
Set celda = IIf(.[a1] = "", .[a1], _
[a65536].End(xlUp).Offset(1))
[a1:g1].Copy
celda.PasteSpecial xlPasteValues
Application.EnableEvents = False
[a1:g1].ClearContents
Application.EnableEvents = True
[a1].Select
Set celda = Nothing
End With
End If
End Sub

creo que era esto, pero si no es asi comentas y le hechamos otro ojo
(a mi me va bien)

un saludo
Ivan
Respuesta Responder a este mensaje
#4 charly_76
06/11/2007 - 23:24 | Informe spam
hola ivan como veras no se mucho de macros
la segunda macro que me enviaste ya no me manda error
pero, solo la primera ves manda los datos capturados ala hoja2
lo que capturo despues los pega en la misma hoja1
ya no los envia ala otra hoja

yo quise adaptar una macro que me encontre en este foro
que al parecer hacia lo que yo queria solo que lo hace en la primera
hoja y en forma vertical me gustaria que tu que sabes le echaras un vistazo

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$A$8" Then Exit Sub
If Not IsEmpty(Range("iv1")) Then MsgBox "SIN Columnas...": Exit Sub
Dim Destino As String: Application.ScreenUpdating = False
If IsEmpty(Range("D1")) Then Destino = "E1" _
Else Destino = Range("iv1").End(xlToLeft).Offset(, 1).Address
With Range("a1:a8")
.Copy Range(Destino): .ClearContents: .Cells(1).Select
End With
End Sub

gracias y saludos

"Ivan" escribió:


hola Charli


> en cuanto
> ingreso cualquier valor en cualquier celda de la hoja1 me manda un error
> de compilacion: error de sintaxis

disculpame, pero creo que es culpa mia por no preverlo y avisarte (o
evitarlo)

si no me equivoco se debe a una linea que se ha 'roto/truncado' en el
editor del foro. Prueba a pegarlo asi:

Private Sub Worksheet_Change(ByVal Target As Range)
Dim celda As Range
If Not Intersect(Target, [g1]) Is Nothing Then
With Hoja2
Set celda = IIf(.[a1] = "", .[a1], _
[a65536].End(xlUp).Offset(1))
[a1:g1].Copy
celda.PasteSpecial xlPasteValues
Application.EnableEvents = False
[a1:g1].ClearContents
Application.EnableEvents = True
[a1].Select
Set celda = Nothing
End With
End If
End Sub

creo que era esto, pero si no es asi comentas y le hechamos otro ojo
(a mi me va bien)

un saludo
Ivan


Respuesta Responder a este mensaje
#5 Ivan
07/11/2007 - 01:36 | Informe spam
hola Juan Carlos,

, solo la primera ves manda los datos capturados ala hoja2
lo que capturo despues los pega en la misma hoja1
ya no los envia ala otra hoja



disculpame de nuevo, ahora me he comido un punto justo delante de =>

[a65536].End(xlUp).Offset(1))

(al truncarse el 1er codigo se quedo en la fila de arriba, y al
rectificar no me di cuenta y se borro)

hay que poner un punto justo antes, quedando asi:

Set celda = IIf(.[a1] = "", .[a1], _
.[a65536].End(xlUp).Offset(1))

pon el cursor justo delante (pegado) del 1er corchete y simplemente
pon un punto.

prueba a ver que tal

solo por si no lo sabes, el motivo del punto es para indicarle al
codigo que la propiedad/metodo/objeto que va a continuacion (la 1ª
celda vacia de la columna A en este caso) es/pertenece/hace referencia
al objeto ("Hoja2" en este caso) que va en la apertura del bloque With
('With Worksheets("Hoja2"))

bueno, lo dicho por si no lo sabes, para que te vaya sonando un poco

un saludo y si siguen los problemas comentas (en cuanto al otro
codigo, si no entendi mal tu consulta inicial creo que [con el punto]
este podria valerte. Si no es asi le ECHAMOS (se me colo la h) un ojo

Ivan
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida