Desplegar información de una celda en Textbox2, según información introducida en Textbox1

Hola buenas tardes, estoy usando excel 2007 programando en VB, la verdad no soy bueno, apenas estoy aprendiendo en videotutoriales y foros como este me han servido de mucho.

La cuestión es que en una hoja de excel tengo una pequeña base de datos con 1000 productos, en la columna A tengo el ID único del producto y en las demás columnas tengo otra info, columna B:descripción, columna C: marca, columna D:existencia, etc etc

Quisiera hacer un formulario (user form), donde al introducir en un textbox1 el ID único del producto (columna A de mi hoja) lo busque en mi hoja (ya lo tengo hecho), en otro textbox2 me apareciera automáticamente la información del producto como por ejemplo su descripción (columna B de la hoja), ya puedo hacer que la información que introduzco en un textbox3 se refleje en la celda de existencia (ayudándome con un botón), pero la verdad la parte que me detuvo fue de como desplegar la información en el TextBox2

¿Algún experto que me pueda ayudar?

De antemano muchas gracias y que Dios los bendiga

1 Respuesta

Respuesta
1

Escribime la macro o esta parte del código para que te agregue lo que falta.

Busque en mi hoja (ya lo tengo hecho),


Porque si ya encontró el dato, solo hay que obtener la fila y según eso volcar el otro campo en el otro textbox. Y para eso necesito saber cómo ubicarlo.

Quedo a la espera de tus aclaraciones.

Hola muchas gracias por la atención

El código es el siguiente

Private Sub CommandButton1_Click()
Dim T1 As String
Dim T3 As String
T1 = TextBox1
T3 = TextBox3

Sheets("INVENTARIO").Select

BuscarDato = T1
Range("A3").Select
Cells.Find(What:=BuscarDato, After:=ActiveCell, LookIn:=xlFormulas, LookAt:=xlWhole, SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate

ActiveCell.Offset(0, 1).Select

'TextBox2 = ActiveCell
'TextBox2= Application.VLookup(T1, Sheets("INVENTARIO").Range("A6:B1000"), 2, False)

'TextBox2.Text=ActiveCell.Value

ActiveCell.Offset(0, 1).Select

ActiveCell = T3

TextBox1 = Empty 'Se limpia el textbox1
TextBox2 = Empty 'Se limpia el textbox3
TextBox3 = Empty 'Se limpia el textbox4

End Sub

Ese es el código, lo que pensé es que al buscar el dato aplico un offset para posicionarme en la celda de la derecha (columna B), y poner algo como que el valor de la celda activa se ponga en el textbox2, pero como vera todo lo que dice textbox2= esta con la comita de comentario, porque es lo que he intentado y no me funciona.

Mas abajo vuelvo a aplicar otro offset para pasar a la columna C y simplemente pongo el dato numérico en el textbox3 y me lo refleja en la celda C"X", que es la existencia de unidades en mi inventario

Gracias nuevamente, espero haber explicado bien.

Dios te bendiga

Voy a comenzar explicando algo xq es un ERROR típico aquí en el foro: el uso de Cells. Find para encontrar algún dato en una tabla, a raíz de que otro usuario consulta sobre la demora en el proceso entre versiones anteriores y la 2007.

Cells. Find busca el dato... pero si no lo encuentra no para hasta llegar a la última celda de la hoja... ya habrás visto cuántas celdas tienen los nuevos Excel.

Entonces acotemos la búsqueda solo a la col A y a un rango razonable, en mi ejemplo dejé hasta la fila 10.000, modifica esto 'en exceso' a lo que puedas utilizar.

Dejo algunas instrucciones comentadas para que utilices las que consideres más aptas para este proceso (*)

Private Sub CommandButton2_Click()
'ajustada x Elsamatilde
Dim T1 As String
Dim T3 As String
T1 = TextBox1
T3 = TextBox3
Sheets("INVENTARIO").Select
BuscarDato = T1
Range("A3").Select
Set BuscarDato = Range("A3:A10000").Find(What:=T1, LookIn:=xlValues, LookAt:=xlWhole) ', SearchOrder:=xlByRows, SearchDirection:=xlNext, MatchCase:=False, SearchFormat:=False).Activate
'si encuentra el dato, coloca en Textbox2 el valor de la col aledaña, B.
If Not BuscarDato Is Nothing Then
TextBox2 = BuscarDato.Offset(0, 1)
'también puede seleccionar la celda encontrada (*)
Range("B" & BuscarDato.Row).Select
'se posiciona en col C y coloca el valor de Textbox3 (*)
ActiveCell.Offset(0, 1).Select
ActiveCell = T3
End If
TextBox1 = Empty 'Se limpia el textbox1
TextBox2 = Empty 'Se limpia el textbox3
TextBox3 = Empty 'Se limpia el textbox4
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas