¿Macro para buscar palabra en una hoja?

Tengo un libro de excel con 2 hojas, la Hoja1, aparecen 5 botones:                                      
                                                        ----mesa1----
                                                        ----mesa2----
                                                        ----mesa3----
                                                        ----mesa4----
                                           ----Imprime todas las mesas----
Y en la Hoja2 tengo muchos valores asociados a cada mesa, aunque no siempre de todas las mesas: por ejemplo, puede ser que un día haya valores de la mesa 1 y 2 solamente, como otro día puede haber valores de las cuatro mesas.
Los cuatro primeros botones de la Hoja1 tienen asociada una macro propia, la cual indica que filtre los valores de la segunda hoja en función de la mesa, y los imprima en una plantilla.
El botón "imprime todas las mesas" ejecuta las 4 macros de los otros botones automáticamente.
Al hacer click en el botón de "imprime todas las lineas" siempre se imprimen las 4 plantillas con los valores de las 4 mesas, independientemente que existan datos de esa mesa o no. Cuando no existen, la macro se ejecuta igualmente e imprime la plantilla en blanco.
Me gustaría evitar que se impriman las plantillas en blanco, añadiendo una macro o añadiendo un código a las macros que tienen asignadas los botones "mesa1", "mesa2", "mesa3" y "mesa4", y que de esta forma, cuando se haga click en el botón "imprime todas las lineas", ignore las mesas que no aparecen en la hoja2, y sólo filtre con el autofiltro e imprima las que sí tienen datos.
=========================Esquema===============================
Hacemos click al botón "Imprime todas las líneas"
--Se ejecuta la macro del botón mesa1
----¿Existe algún valor de la mesa1 en la hoja2?
-- Sí---entonces filtralos por mesa2, imprime, luego pasa al macro del botón mesa2
-- No----- entonces pasa al macro del botón mesa2
--Se ejecuta la macro del botón mesa2
----¿Existe algún valor de la mesa2 en la hoja2?
-- Sí---entonces filtralos por mesa2, imprime, luego pasa al macro del botón mesa3
-- No----- entonces pasa al macro del botón mesa3
--Se ejecuta la macro del botón mesa3
----¿Existe algún valor de la mesa3 en la hoja2?
-- Sí---entonces filtralos por mesa3, imprime, luego pasa al macro del botón mesa4
-- No----- entonces pasa al macro del botón mesa4
--Se ejecuta la macro del botón mesa4
----¿Existe algún valor de la mesa4 en la hoja2?
-- Sí---entonces filtralos por mesa4, imprime, luego acaba ejecución de la macro
-- No----- entonces acaba la ejecución de la macro
=============================================================
El código del filtro y la impresión ya están implementados, lo que necesito es saber cómo se hace para que reconozca de qué mesa o mesas son los datos de la hoja2, para poder seguir el esquema anterior
Por ejemplo, se podría implementar una búsqueda justo al principio del código asignado para cada botón, en la cual se busque si existe el nombre de la mesa a tratar (mesa1, mesa2, mesa3 o mesa4), y si existe, que siga ejecutando, y sino, que pase a la siguiente mesa. De la forma que alguna variable sea true, que haga la búsqueda, y si no encuentra la mesa correspondiente en la hoja2, que la variable sea false, y si es false que pase a la siguiente, o algo parecido
No sabría como escribir este código. ¿Tendríais alguna otra idea?
Muchas gracias por vuestra ayuda

1 respuesta

Respuesta
1
Si ya desarrollaste algunas macros, sabrás la importancia de contar con referencias a la hora de programar.
Como aquí no se indica nada más que la hoja, solo puedo acercarte unas líneas de ejemplo, con el uso de Find . Tendrás que ajustar rango de búsqueda y otros aspectos.
Imaginemos que tu macro 'Imprime total' tiene algo así:
Sub imprimeTotal()
call macro1
dato = "mesa1"
set busco = Sheets("Hoja2").Range("tu_rgo").Find(dato,lookin:=xlvalues,lookat:=xlwhole)
if not busco is nothing then    'significa que existe, entonces se filtra
call filtrado
end if
'seguimos con macro2
call macro2
dato = mesa2
set busco=   'repetir para el 2do dato
'y así hasta terminar
Por supuesto que si tenés 1 bucle para los 4 datos, lo armaras de tal modo que puedas reemplazar la variable dato por la que corresponda en cada paso.
Muchísimas gracias! He podido implementarlo en mi macro con las modificaciones pertinentes y ha funcionado satisfactoriamente
Te lo agradezco
Saludos

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas