Busca, copia y pega.

Hola a todos, tengo el siguiente código que busca datos de una lista especificada, los copia y los pega en otro lugar determinado:
Sub Busca()
Dim n As Range
palabra_a_buscar = InputBox("Nro. De cuenta", "BUSCADOR")
'Busca de la hoja especificada'
Sheets("Clientes").Select
Set n = Cells.Find(What:=palabra_a_buscar)
If n Is Nothing Then
MsgBox "Cliente inexistente."
Else
Range(n.Address).Select
End If
Set n = Nothing
'Nos situamos en la fila activa
x = ActiveCell.Row
'Nos situamos en la columna activa
y = ActiveCell.Column
'Marcamos en la celda y cuantas columas queremos copiar
z = Cells(x, y + 1).Address & ":" & Cells(x, y).Address
Range(z).Copy
'Seleccionamos la hoja y la celda para pegar
Sheets("Hoja1").Select
Range("h5").Select
'Buscamos la primera fila vacia en esa columna
Do While Not IsEmpty(ActiveCell)
'Nos situamos en ella
ActiveCell.Offset(1, 0).Select
'Esto repite la busqueda hasta que encuentra la fcelda vacía
Loop
'Pegamos la fila copiada anteriormente
ActiveCell.PasteSpecial
End Sub
Para una carga de datos más rápida lo que necesitaría es hacer lo mismo pero sin tener que llamar al buscador mediante un botón o un atajo de teclas. Podrían ser dos opciones:
1-Que el buscador se abra cuando se selecciona una celda de un rango determinado
2-Que no sea necesario el buscador y cuando ingrese un Nº de cliente me pegue el nombre en la celda de al lado.
Desde ya, nuevamente gracias por su invalorable ayuda.

1 Respuesta

Respuesta
1
Esto se puede hacer sin macros, usa la función BUSCARV, en la celda donde quieres poner
por ejemplo el nombre del Cliente, escribe:
=BUSCARV("Valor", "Rango", "Columnas", "V/F")
Explicacion:
Valor = El valor a buscar (Codigo por ejm)
Rango = En que rango deseas buscar ese Valor
Columnas = Cuantas Columnas debe "brincar" a partir de la columna donde encuentra ese Valor
V/F = Verdadero (Si quieres buscar dato exacto, RECOMENDADO) o Falso (Si quieres que busque dato aproximado)
Me avisas si te sirvió o cualquier duda que tengas
El problema que me surge con la función BUSCARV es que si busco algún valor 2 veces la segunda vez no lo encuentra. Básicamente lo que desearía hacer es ingresar un número de cliente en una celda y que me pegue al lado de esta el nombre que tengo en una tabla en otra hoja. De cualquier manera sigue siendo muy útil su ayuda.
Puedes enviarme tu archivo para analizarlo
[email protected]
Amigo, ya solucioné mi problema aplicando la función Private Sub Worksheet_Change(ByVal Target As Range) al pasar por una celda. Solamente me gustaría que me aclares si es posible usar este evento en más de una ocasión en la misma hoja, o sea que, al pasar por un rango determinado dispare una macro y al pasar por otro dispare otra. Luego de tu respuesta daré por fianlizada mi pregunta. Una vez más, muchas gracias.
Checa este código y me avisas si tienes dudas
Private Sub Worksheet_Change(ByVal Target As Range)
Dim c As Range
'c guarda el n(los) rango(s) para disparar la macro
Set c = Range("A1:A10, D1:D10")
If Not Intersect(c, Range(Target.Address)) Is Nothing Then
'aqui pon tu rutina o el nombre de la rutina q quieras llamar
     MsgBox "La Celda " & Target.Address & " ha cambiado."
End If
End Sub
Quizás no entediste mi consulta o yo no me explique bien, ya que la rutina que me pasaste no contesta mi pregunta. De cualquier manera has sido de gran ayuda y ya solucioné el problema con:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim a As Range
Set a = Range("a1")
Dim b As Range
Set b = Range("a2")
If Not Intersect(a, Range(Target.Address)) Is Nothing Then
MsgBox "Estoy en " & Target.Address & "
Else:
If Not Intersect(b, Range(Target.Address)) Is Nothing Then
MsgBox "Y ahora en " & Target.Address & "
End If
End If
End Sub
Chau y nuevamente gracias.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas