Copiar en la primera línea no usada de otra hoja

12/10/2007 - 01:04 por GRIEGO59 | Informe spam
Hola!
Tengo una hoja “ingresos”
Con los campos:
A2 Nombre
B2 Fecha
A4 Monto
A5 Guardar

Y otra hoja “clientes”
Con los títulos:
A1 Nombre
B1 Activo
C1 Fecha
D1 Valor histórico
E1 Valor actual
F1 Monto

Quisiera hacer un código que al presionar “enter” cuando el cursor esté
ubicado en la celda a5 de la hoja “ingresos” se copie el contenido de las
celdas a2, b2, a4 de la hoja “ingresos” en las celdas a1, c1, f1 de la hoja
“clientes” y luego el cursor se posicione en “compras” a2, para un nuevo
registro.

Todos son datos no hay fórmulas.

Gracias por su ayuda.

Preguntas similare

Leer las respuestas

#1 Ivan
12/10/2007 - 03:58 | Informe spam
hola,

podrias probar algo asi, a ver que tal =>

' en el modulo de la hoja 'ingresos' --
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Target, [a5]) Is Nothing Then _
Application.OnKey "{enter}", "copiar"
End Sub

' en un modulo normal -
'
Sub copiar()
Dim ultF As Long
If [a2] = "" Then MsgBox "El nombre es obligatorio": [a2].Select:
Exit Sub
With Worksheets("clientes")
ultF = .[a65536].End(xlUp).Row + 1
.Cells(ultF, 1) = [a2]
.Cells(ultF, 3) = [b2]
.Cells(ultF, 6) = [a4]
End With
Range("a2,b2,a4").ClearContents
[a2].Select
Application.OnKey "{enter}"
End Sub


a ver si te ayuda

un saludo
Ivan
Respuesta Responder a este mensaje
#2 Ivan
12/10/2007 - 04:03 | Informe spam
OJO: parece que el codigo se ha quebrado en el foro: el exit sub debe
ir tras el 1er [a2].select con los 2 puntos y un espacio entre medias.
por si acaso te lo pongo con un guion de continuacion de linea. Seria
pej. asi =>

If [a2] = "" Then MsgBox _
"El nombre es obligatorio": [a2].Select: Exit Sub

un saludo
Ivan
Respuesta Responder a este mensaje
#3 GRIEGO59
12/10/2007 - 06:44 | Informe spam
Hola!
Copié tu código con la corrección que me dijiste pero:
Al presionar "enter" sobre la celda con la palabra grabar me da el mensaje:
"No se puede encontrar la macro "´c:/Documents and
settings/administrador/escritorio/relación de clientes.xls´!Copiar"

Saludos,
Griego59


"Ivan" escribió:



OJO: parece que el codigo se ha quebrado en el foro: el exit sub debe
ir tras el 1er [a2].select con los 2 puntos y un espacio entre medias.
por si acaso te lo pongo con un guion de continuacion de linea. Seria
pej. asi =>

If [a2] = "" Then MsgBox _
"El nombre es obligatorio": [a2].Select: Exit Sub

un saludo
Ivan


Respuesta Responder a este mensaje
#4 Ivan
12/10/2007 - 23:41 | Informe spam
hola,

Copié tu código con la corrección que me dijiste pero:
Al presionar "enter" sobre la celda con la palabra grabar me da el mensaje:
"No se puede encontrar la macro "Žc:/Documents and
settings/administrador/escritorio/relación de clientes.xlsŽ!Copiar"




¿donde has pegado la macro "Copiar"?

debe de ir en un 'modulo normal', (menu Insertar => Modulo (a secas))
[no en el de la hoja <aqui solo debe ir el de selectionChange> ni en
Thisworkbook]

tambien asegurate de que el nombre de la macro no se ha modificado por
alguna causa. A mi al menos me funciona sin problemas

de todas formas si quieres poder utilizar tambien la tecla 'Retorno'
del teclado alfabetico y ademas prevenir algun digusto si quieres
cambialos por algo parecido a esto (puedes modificar los mensajes de
error a tu gusto (e incluso omitirlos)

ya sabes, el selectionChange en el modulo de la hoja 'ingresos' y los
procedimientos 'Copiar' y 'Reponer' en un modulo NORMAL


' en el modulo de la hoja 'ingresos' --
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Worksheet_SelectionChange_Error
If Not Intersect(Target, [a5]) Is Nothing Then
Application.OnKey "{enter}", "Copiar"
Application.OnKey "{return}", "Copiar"
End If
On Error GoTo 0
Exit Sub
Worksheet_SelectionChange_Error:
MsgBox "Error " & Err.Number & " (" & Err.Description & _
") en el procedimiento Worksheet_SelectionChange de tipo Sub " &
_
"del Documento VBA: Hoja1"
Application.OnKey "{enter}"
Application.OnKey "{return}"
End Sub


' en un modulo normal -
'
Sub Copiar()
Dim ultF As Long
If [a2] = "" Then MsgBox "El nombre es obligatorio": [a2].Select:
Reponer: Exit Sub
With Worksheets("clientes")
ultF = .[a65536].End(xlUp).Row + 1
.Cells(ultF, 1) = [a2]
.Cells(ultF, 3) = [b2]
.Cells(ultF, 6) = [a4]
End With
Range("a2,b2,a4").ClearContents
[a2].Select
Reponer
End Sub
Sub Reponer()
Application.OnKey "{enter}"
Application.OnKey "{return}"
End Sub


si quieres comentas que tal

un saludo
Ivan
Respuesta Responder a este mensaje
#5 Ivan
12/10/2007 - 23:45 | Informe spam
y otra vez los saltos del foro

pegalos asi=>

' en el modulo de la hoja 'ingresos' --
'
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
On Error GoTo Worksheet_SelectionChange_Error
If Not Intersect(Target, [a5]) Is Nothing Then
Application.OnKey "{enter}", "Copiar"
Application.OnKey "{return}", "Copiar"
End If
On Error GoTo 0
Exit Sub
Worksheet_SelectionChange_Error:
MsgBox "Error " & Err.Number & " (" & _
Err.Description & ") en el procedimiento " & _
"Worksheet_SelectionChange de tipo Sub " & _
"del Documento VBA: Hoja1"
Application.OnKey "{enter}"
Application.OnKey "{return}"
End Sub


' en un modulo normal -
'
Sub Copiar()
Dim ultF As Long
If [a2] = "" Then _
MsgBox "El nombre es obligatorio": _
[a2].Select: Reponer: Exit Sub
With Worksheets("clientes")
ultF = .[a65536].End(xlUp).Row + 1
.Cells(ultF, 1) = [a2]
.Cells(ultF, 3) = [b2]
.Cells(ultF, 6) = [a4]
End With
Range("a2,b2,a4").ClearContents
[a2].Select
Reponer
End Sub
Sub Reponer()
Application.OnKey "{enter}"
Application.OnKey "{return}"
End Sub


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