Seleccionar registro y copiar2

Disculpa Luis, lo que sucede es que el ejemplo que te puse es para que en teoría me explicara mejor, pero no quise ofenderte, permite tratar de ser más claro, y modifique mi redacción:
Tengo una tabla con 20 registros (Hoja1) y 60 columnas.
Sin ningún problema, logro seleccionar a un registro especifico de un usuario especifico con todos sus datos, con el siguiente código.
Private Sub ComboBox1_Enter()
    On Error Resume Next
    ComboBox1.Clear
    Hoja1.Activate
    Report.Select
    Range("B7").Select
    Do While Not IsEmpty(ActiveCell)
    ComboBox1.AddItem ActiveCell.Value
    ActiveCell.Offset(1, 0).Select
    'MsgBox ActiveCell.Select
    Loop
End Sub
lo que quiero hacer ahora es:
En la hoja2 tengo un formato, quiero que los datos del registro que seleccione, se pegen todos los datos en ese formulario o templete, pero en celdas especificas, por ejemplo:
El nombre completo en la fila-columna A8:D8
la dirección en la fila-columna a16:k16
el grado de estudios en la fila-columna a32:e32
el proceso en el que esta, la fila-columna c56:c56
y así sucesivamente de acuerdo al renglo que seleccione, a continuación te pongo un ejemplo del archivo de excel, el paip (|) viene siendo el inicio y fin de cada columna.
#| Nombre completo     | direccion  | rfc       | telefono |
1| gerardo hdz sanchez | valle #33  |aaaj656576 |5531654154|
2| jose hdz schez      | valle #39  |aaaj656576 |5531658484|
3| pedro hdz lopez     | valle #42  |aaaj656576 |5565465646|
4| ricardo sanchez z   | valle #233 |aaaj656576 |5568761332|
Tu me decías:
Experto:
Bueno, eso o arreglas utilizando una matriz de datos
toma el registro y lo pasa a una matriz de datos string así
matriz()=split(dato,"#")
En donde "dato" es una variable string a la cual le pasaste previamente el registro seleccionado en el combo
en donde "#" es el delimitador de campos del registro por ti seleccionado, debes modificarlo por si tienes otro, veo que en tu ejemplo pusiste " | " entonces cambia # por |
Así el registro
1| gerardo hdz sanchez | valle #33  |aaaj656576 |5531654154|
Contendrá 5 campos luego le pasas los datos a las celdas que desees utilizando el indice de matriz
ej:
A10=matriz(0)
C15=matriz(2)
G45=matriz(4)
Así.
Disculpa no se como defino una matriz, y el paip "|" es la columna, en las columnas no tengo ese dato, podrías por favor echarme una manita. Gracias de antemano.

1 Respuesta

Respuesta
1
Jesús no me ofendes como te crees eso, no te lo tomes personal, no recibo archivos de nadie, por tema de seguridad de mi equipo, nada más.
Mira entiendo que en el combo cada registro esta compuesto por cadenas de texto de esta forma
| gerardo hdz sanchez | valle #33  |aaaj656576 |5531654154|
Comprendo que este carácter "|" es a modo de explicar que es la separación entre campos pero que en realidad solo es un espacio.
Pero cabe la duda de si deseas pasar el nombre al rango A8:D8 ( que son 4 celdas ), ¿es decir el mismo dato a 4 celdas distintas? ¿Pues para el dato de ejemplo solo son 3 (gerardo hdz sanchez)?.
Mira para hacer esto que te explicaba antes es necesario 2 cosas
1 que tengas un separador de campos entre dato y dato, si solo es un espacio, debe ser solo 1 o si sin 2 espacios solo 2, no sirve tener un registro compuesto por campos con separaciones dispares, pues varían los indices de la matriz a crear, de esta forma no coincidirían en la distribución al pasr los datos a la hoja 2.
Creo que lo más sencillo para esto es no utilizar una matriz de datos pues no amerita para pasar un dato a la vez, creo que lo que te conviene es incluir como dato en el combo el numero de fila del registro, y luego cuando seleccionas el dato en el combo, llamas al macro que pasara los dtod desde hoja 1 a hoja2 tomando como ubicación el numero de fila que le pasaras desde el combo, ¿comprendes?
Te voy a poner un ejemplo practico que luego puedes adaptar a tu hoja, es solo cuestión de cambiar algunas cositas:
Los datos están en hoja2 pues veo que el combo lo cargas desde allí, luego al seleccionar un dato en el combo, llamaremos el macro pasar_dato, el cual pasara los datos desde la hoja desde la que cargaste el combo y los traslada a la hoja3
pruebalo y modificalo:
Private Sub ComboBox1_Enter()
    On Error Resume Next
    ComboBox1.Clear
    Hoja1.Activate
    report.Select
    range("B7").Select
    Do While Not IsEmpty(ActiveCell)
    ComboBox1.AddItem ActiveCell.Value & " %" & Selection.Row
    ActiveCell.Offset(1, 0).Select
    'MsgBox ActiveCell.Select
    Loop
End Sub
Private Sub ComboBox1_Change()
' pasar los datos selecinados a la hoja3
Dim f As Integer
f = InStr(1, ComboBox1.Value, "%") + 1 ' ubicamos la posicion del marcador "%"
pasar_dato (Mid(ComboBox1. Value, f, 5)) ' llamas el macro que pasara los datos pasandole el numero de la fila
End Sub
Sub pasar_dato(fila As String)
Sheets(3).range("A1") = Sheets(2).Cells(fila, 2)
Sheets(3).range("b1") = Sheets(2).Cells(fila, 2).Offset(0, 1)
 end sub

Añade tu respuesta

Haz clic para o
El autor de la pregunta ya no la sigue por lo que es posible que no reciba tu respuesta.

Más respuestas relacionadas