Como buscar datos en una columna de excel y colocarlos en otra hoja partiendo de un código ingresado

Necesito una macro que me recorra una hoja mediante el uso de un formulario, que contiene la identificación y me coloque los datos en otra hoja.

1 respuesta

Respuesta
1

[Hola

¿En cuál columna se va buscar?

¡Gracias!  por la prontitud.

 En la columna "A" se encuentra la identificación y en la columna "B" los nombres con los apellidos; la idea es que cuando se escriba la identificación, la busque en el listado de la HOJA1 y la inserte en la HOJA2. El formulario debe llevar un text que me reciba un valor (Ej: $180.000 pesos) numérico correspondiente a cada persona y lo agregue a la HOJA2; es decir una tercera columna.  Como los datos debo incluirlos con una fecha fija por semana, quisiera que al inicio solamente escribiera la fecha una sola vez y no tener que escribirla cada vez que solicite un registro. 

Te paso la macro



Private Sub CommandButton1_Click()
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    '
    dato = TextBox1     'Buscar por TextBox1
    '
    Set r = h1.Columns("A")
    Set b = r.Find(dato, lookat:=xlWhole)
    '
    If Not b Is Nothing Then
        u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        '
        h2.Cells(u, "A") = h1.Cells(b.Row, "A")
        h2.Cells(u, "B") = h1.Cells(b.Row, "B")
        h2.Cells(u, "C") = TextBox2 ' valor de peso
    Else
    MsgBox "No existe el código"
    End If
End Sub

Excelente, gracias. me puedes ayudar para que cuando este digitando, no tener que escribir la misma fecha a todos los registros de ese día; sino que, automáticamente excel la escriba  en una columna alterna. en otras palabras que yo digite la fecha una sola vez y el sistema automáticamente la cargue a una columna alterna del la identificación.

Haber si te entendí en registrar la fecha de registro.


Después de esto

H2.Cells(u, "C") = TextBox2 ' valor de peso

pon esto 

h2.Cells(u, "D") = Date ' fecha de registro 

Como hago par que el foco se me situe en el textBox luego que me muestre que el código ingresado no aparece registrado. lo tengo así:

Private Sub TextBox2_AfterUpdate()
    Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    Set r = h1.Columns("A")
dato = TextBox2
Set b = r.Find(dato, lookat:=xlWhole)
If Not b Is Nothing Then
       ' u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
        TextBox3 = h1.Cells(b.Row, "B")
        '
      '  h2.Cells(u, "A") = TextBox2 ' valor de peso
      '  h2.Cells(u, "B") = h1.Cells(b.Row, "B")
        'h2.Cells(u, "C") = h1.Cells(b.Row, "C")
      '  h2.Cells(u, "D") = TextBox2 ' valor de peso
    Else
    MsgBox "No existe el Código"
    Cancel = True
    TextBox2 = ""
    Me.TextBox2.SetFocus
    End If
    End Sub

Lo que quiero es que me de la portunidad de digitar otro código y no que me salte al textbox siguiente.

¿Me podrías ayudar? por fa. !

[Hola 

pon en el evento exit del textbox y te funcionará el cancel = true

para otra pregunta creas una nueva petición saludos!



Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Set h1 = Sheets("Hoja1")
    Set h2 = Sheets("Hoja2")
    Set r = h1.Columns("A")
    dato = TextBox2
    Set b = r.Find(dato, lookat:=xlWhole)
        If Not b Is Nothing Then
        ' u = h2.Range("A" & Rows.Count).End(xlUp).Row + 1
            TextBox3 = h1.Cells(b.Row, "B")
        '
        '  h2.Cells(u, "A") = TextBox2 ' valor de peso
        '  h2.Cells(u, "B") = h1.Cells(b.Row, "B")
        'h2.Cells(u, "C") = h1.Cells(b.Row, "C")
        '  h2.Cells(u, "D") = TextBox2 ' valor de peso
        Else
            MsgBox "No existe el Código"
            Cancel = True
            TextBox2 = ""
            Me.TextBox2.SetFocus
        End If
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas