Como saber que celda está activa en función de un buscador

He visto algunas respuestas sobre visual basic en excel que has resuelto en ésta página y me he creado una cuenta para contactar contigo y hacerte una consulta. Nose si en ésta página se pueden puntuar o valorar respuestas, si es así, dígame como lo hago para valorar su ayuda de forma grata.

Agradecería que me echase un cable porque ando algo perdido y necesito hacer lo siguiente.

Tengo un inventario en Excel, con la siguiente estructura, una columna para el nombre del producto, otra para el tipo de producto que es, otra para la estantería en la que está, y otra para la altura en esa estantería en la que está, y otra para las unidades disponibles, y en otra página he creado un buscador de forma que al introducir el nombre del elemento aparezcan los datos de las demás columnas, mediante la función buscarf (excel 2007). A parte, en ese buscador, he creado una celda para introducir las unidades a añadir o a quitar, y otra celda de modo que se sume el valor de las unidades a añadir o quitar y las unidades disponibles, de modo que estoy intentado crear una macro mediante un boton llamado actualizar, para que al pulsarle, se actualice el valor en la hoja del inventario de la celda de unidades del elemento buscado con el valor de la celda del buscador de las unidades disponibles ya sumadas.

Le pregunto porque he visto que contestó una pregunta similar, pero no se utilizar la funcion target adecuadamente.

1 Respuesta

Respuesta
1

Aqui tienes lo que necesitas

He reproducido en la Hoja1 tu estructura de tu base de datos:

Y en la Hoja2 tu buscador:

Donde hay que poner el nombre a buscar en la celda A2 y las unidades en la casilla E2

También he añadido un botón para ejecutar la Macro que actualizará el valor de la columna E en la Hoja1:

Sub Macro()

Dim actualizar As Integer
Dim actual As Integer
Dim target As String

Application.ScreenUpdating = False
target = Sheets("Hoja2").Range("A2").Value
actualizar = Sheets("Hoja2").Range("E2").Value

Sheets("Hoja1").Select
Cells.Find(What:=target, After:=ActiveCell, LookIn:= _
xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False, SearchFormat:=False).Activate
ActiveCell.Offset(0, 4).Select
actual = ActiveCell.Value
ActiveCell.Value = actual + actualizar
Sheets("Hoja2").Select
Application.ScreenUpdating = True

End Sub

Pruébala y ya me dirás

No funciona compañero :S he reproducido también tus datos en un nuevo libro pero nada

Compara lo que has hecho con el mio que te dejo para descargar. Algo no está en su sitio porque este si funciona

Un saludo

https://www.dropbox.com/s/nijjdys7j1h501u/platanos.xlsm?dl=0 

Cierto ahora si me funciona el tuyo, ¿pero cómo añado la macro o la vinculo por así decirlo para que al darle al botón se ejecute? Que es en eso en lo que estaba fallando :S

Muchas gracias!

Para entrar en el editor de proyectos y ver donde y como está la macro dale a ALT+F11

Para añadir el botón, en el menu Programador/Insertar/boton(control de formulario) y les asignas la macro

Si no tienes la pestaña programador (bastante posible), tienes que:

  1. Haga clic en la pestaña Archivo.

  2. Haga clic en Opciones.

  3. Haga clic en Personalizar la cinta de opciones.

  4. En Personalizar la cinta de opciones y Pestañas principales, active la casilla Desarrollador.

Buenas de nuevo gregori00001,

me ha surgido un pequeño problema con tu código, he cambiado la configuración del inventario de modo que ahora no solamente tengo las columnas que escribí ayer, de modo que ahora tengo:

Codigo Interno | Codigo Ref | Nombre | Tipo | Estant. | Altura | Uds 

Es decir, ahora tengo 7 columnas en vez de tener las 5 de ayer, y la búsqueda la realizo por el código interno (primera columna), no por el nombre, y al utilizar tu código se escriben columnas fuera del inventario :S.

Nosé si el problema está en la linea del código:

ActiveCell.Offset(0,  4).Select

actual = ActiveCell.Value

Que ya no sería (0,4)

Agradecería que me echases un cable y me expliques de forma breve la función que realiza ese comando para futuros cambios!

Muchas gracias!

ActiveCell.Offset(0, 4).Select

Significa que se mueva 4 celdas a la derecha respecto la celda que ha buscado.

Así pues, si ahora la tienes dos celdas más lejos tienes que cambiar el 4 por un 6

ActiveCell.Offset(0, 6).Select

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas