Pasar los valores de una linea a otra hoja

Saludos.
Quisiera saber si es posible lo que voy a plantear, y si lo es a ver si me pueden ayudar. Gracias de antemano.
Tengo una hoja1 donde tengo mi lista de clientes con varios datos de cada uno de ellos, y tengo una hoja2 donde necesito copiar algunos datos de mi cliente cuando yo selecciono a uno en particular.
Por ejemplo. Tengo esto en la hoja 1
fila 1. Sandro, 52, 19/11/76, 123.30
fila 2. Isabel, 23, 23/05/85, 200.00
fila 3. Pilar, 54, 30/08/79, 300.00
fila 4. Luz, 23, 11/04/79, 400.00
Selecciono cualquier celda de la fila 3, y en la hoja dos solo quiero que se copie el nombre y la fecha de nacimiento.
¿Es posible?

1 Respuesta

Respuesta
1
Entra en el editor de Visual Basic (pulsando <Alt><F11>). Si no tienes la ventana 'Proyecto', pulsa <Ctrl><R> para que la presente y, cuando la tengas, haz doble click sobre 'Hoja1'.
Te aparecerá la parte del código de esa página en blanco o con una línea de "Option Explicit".
Copia este código en esa ventana:
Option Explicit
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Dim aux As String
    Dim nFila As Long
    ' Si se ha seleccionado un rango de celdas. No nos sirve porque tienen
' que marcar la línea (y además una línea solo)
    If Target.Rows.Count > 1 And Target.Columns.Count > 1 Then Exit Sub
    ' Si han seleccionado más de una fila tampoco nos sirve, por tanto salimos
    If Target.Rows.Count > 1 Then Exit Sub
    ' Ya sabemos que han seleccionado una fila con... una, varias o todas las columnas
    ' Si no se han seleccionado todas las columnas de la página... han marcado un
' rango de celdas y no es lo que buscamos
    If Target.Columns.Count < ActiveSheet.Columns.Count Then Exit Sub
    aux = Target.Address
    ' Al estar seleccionada una fila, "aux" contendrá el siguiente
    ' valor: $fila:$fila
    ' Cogeremos el número de la fila
    If InStr(aux, ":") = 0 Then
        ' No vienen los dos puntos !!!
        MsgBox "Error en el formato de la dirección. No vienen los dos puntos."
        Exit Sub
    End If
    aux = Left$(aux, InStr(aux, ":") - 1)
    If Left$(aux, 1) = "$" Then aux = Right$(aux, Len(aux) - 1) ' Si lleva el $ lo quitamos
    ' En aux debe quedar sólo el número de la fila.
    If Not IsNumeric(aux) Then
        ' Horror, no viene un número. ¿Qué pasa? (Nunca debería entrar por aquí)
        MsgBox "Error: la variable no contiene un valor numérico"
        Exit Sub
    End If
    nFila = Val(aux) ' Ya tenemos el número de la fila marcada.
    ' Solo nos falta copiar los datos de la fila marcada en la Hoja2
    ' Supongamos que queremos copiar el valor de la columna A y el de la columna C
' en las celdas B1 y B2 de la Hoja2. Pondríamos lo siguiente:
    Sheets("Hoja2").Cells(1, 2) = Sheets("Hoja1").Cells(nFila, 1) ' Hoja2!B1=Hoja1!A<fila seleccionada>
    Sheets("Hoja2").Cells(2, 2) = Sheets("Hoja1").Cells(nFila, 3) ' Hoja2!B2=Hoja1!C<fila seleccionada>
    ' También copiamos el formato de la celda (por si acaso no es el mismo)
    Sheets("Hoja2").Cells(1, 2).NumberFormat = Sheets("Hoja1"). Cells(nFila, 1). NumberFormat
    Sheets("Hoja2").Cells(2, 2).NumberFormat = Sheets("Hoja1"). Cells(nFila, 3). NumberFormat
    ' Y esto es todo...
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas