¿Crear macro genérica para modificar dato encontrado en Tabla?

A tod@s!

Quiero crear una macro en un modulo que llamándole de varias macros y dándole como datos.

1 Hoja... Donde esta la tabla "MasterDATA"

2 nombre de la tabla..."TablaREPUESTOSenAlmacen"

3 Dato a encontrar "DatoaEncontrar" as string

4 Columna donde debe encontrar el dato. ( La columna 5 de la tabla) Ncolumn

Y teniendo en cuenta que tengo 8 columnas en la tabla TablaREPUESTOSenAlmacen,

¿Cómo modificar esa fila con el dato encontrado?

Estoy atascado en esto, ¿se puede hacer?

2 Respuestas

Respuesta
2

Revisa el método Find

https://youtu.be/WI1XrCY50mA 

https://youtu.be/5k0szqErdXg 

Sal u dos

Dante Amo

¡Gracias!

El método find es el que ya utilizo, aun así muy buena explicación en tus videos.

Por otra parte, lo que yo quiero es crear una macro en un modulo, de tal manera que pasándole los datos que describo en la pregunta .

Por ejemplo, ¿cómo le paso la Tabla "TablaREPUESTOSenAlmacen" tengo que crear una variable de tipo?, ... es decir pasarle a esa macro (común) diferentes tablas para que me encuentre un Dato en la columna que yo necesite.

Gracias por tu tiempo... un saludo Dante!

Respuesta
1

Habrás notado que se nos hace muy difícil (diría casi imposible) dejar códigos aquí. Lo intento. Si no puedo adjuntarlo enviame un correo para que te lo pase desde allí.

Sdos.

Elsa

La respuesta salió... veamos si puedo adjuntar el código:

Public nroFil As Integer
Sub prueba()
Dim hojax As String
Dim tablax As String, datox As String
Dim nColumn As Byte 'o Integer dependiendo de la cant de col

hojax = ActiveSheet.Name 'ajustar
tablax = "TablaComi" 'ajustar
datox = "*" & "LAUTARO" & "*" 'puede ser una referencia a celda
nColumn = 6

Call buscaDato(hojax, tablax, datox, nColumn)
'si la fila no quedó vacía se modifica el registro
If nroFil <> 0 Then
'modificar datos de esa fila encontrada
MsgBox nroFil
End If
End Sub

Sub buscaDato(hojita, tablita, dato, nroCol)
nroFil = 0
Set tablay = Sheets(hojita).ListObjects(1).ListColumns(nroCol).DataBodyRange
Set busco = tablay.Find(dato, LookIn:=xlValues, lookat:=xlWhole)
'si encontró el dato en la col solicitada, se guarda la fila en la variable pública
If Not busco Is Nothing Then nroFil = busco.Row
End Sub

Sdos!

Bien, y aquí las explicaciones:

Ajusta cada variable según tu situación (col, hoja, tabla y dato)

Luego se llama a la macro que realizará la búsqueda (y posterior modificación desde allí mismo) con esos argumentos.

Dejé una variable pública que guarda la fila encontrada por si la modificación se hace en otro proceso. Si lo haces dentro de la misma macro de búsqueda no necesitas declarar esa variable al inicio del módulo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas