Saltar al contenido

Modificar macro buscar y borrar


juanpl206

Recommended Posts

publicado

Hola nuevamente a todos los foreros de aqui, la verdad que gracias a ustedes pude modificar mi macro anterior y usarla perfectamente, ahora tengo un nuevo desafio y ya pase mas de 2 dias intentanto y no doy en la tecla, el punto es el siguiente: quiero que mi macro borre los datos como lo hacia en otro libro pero ahora necesito incluir una condicion, quiero que borre los datos en la Hoja2 si en la hoja1 esta "LA" y/o "LT" pero solo si coincide con la celda "k7" de la Hoja2.

Adjunto archivo para que se entienda mejor.

Desde ya Gracias a todos.

Saludos Juan.

ejemplo1.xls

Invitado Cacho R
publicado

Hola! Juan.

Fíjate, por favor, si la variante adjunta te puede ser de utilidad.

Saludos, Cacho R.

Ejemplo_2.xls

publicado
Hola! Juan.

Fíjate, por favor, si la variante adjunta te puede ser de utilidad.

Saludos, Cacho R.

Hola Cacho R., antes que nada quiero darte las gracias por responder y solucionar mi problema, es justo lo que buscaba, ahora bien, yo copio esa macro y la llevo a mi libro (que tiene mas hojas) donde tengo todos los datos como el "ejemplo1" pero completo, el tema es que si bien hay mas datos en la hoja1 y hoja2 de "ejemplo1" esos datos estan agregados en mas filas, es decir no modifico la cantidad de columnas, sin embargo cuando ejecuto la macro me tira: " se ha producido el error 1004 en tiempo de ejecucion:Imposible obtener la propiedad Match de la clase worksheetsFunction"

Antes de molestarte nuevamente pase 2 horas en la web tratando de solucionar por medio propio esta falla pero no lo pude resolver.

En que me estoy equivocando?

Desde ya muchas Gracias.

Saludos, Juan.

Invitado Cacho R
publicado

El "Match" que mencionas equivale a la función COINCIDIR.

En efecto: fíjate que en

colDia = WorksheetFunction.Match(CInt(Hoja2.[k7]), .[a1:ag1], 0)

tenemos (como en toda función COINDICIR) tres parámetros importantes:

--> CInt(Hoja2.[k7])

Esto es "lo que buscamos", o sea: el día (22, 1, 30, o el que sea).

Advierte que si la información buscada no se encuentra en la hoja de "codName" Hoja2, tendrás un error.

--> Del mismo modo, si no tienes la fecha buscada en la primera fila de la hoja de "codName" Hoja1 (de allí el .[a1:ag1]), tendrás otro error.

--> Finalmente, el "0" de la fórmula es quien instruye al COINCIDIR que realice una búsqueda exacta.

En resumen:

Dices que tienes más hojas que las mostradas. Es evidente que esta parte del código no lo has adaptado del modo correcto.

Quizás te convenga subir al Foro una muestra más parecida a la configuración real. O sea: con más hojas.

Nota que si tu problema de adaptación es el que estamos analizando, entonces no se requiere que las hojas que subas en tu nuevo ejemplo contengan información, sino -y sólo- títulos.

Saludos, Cacho R.

publicado

Hola Cacho R, gracias nuevamente por tomarte tiempo en responder y darme una explicacion del tema, ahora bien, revise todo tal cual lo explicaste y sigue sin funcionar, pero creo saber el motivo pero no la solucion, jeje, te comento, si bien cuando copie la macro a mi libro respete el nombre de las hojas del ejemplo( es decir agregue dos hojas a mi libro y las renombre como en el ejemplo) y no modifique ninguna columna ni valor seguia sin funcionar, pero intentando de una y otra forma me di cuenta que si renombro las hojas del ejemplo y renombro tambien esos nombres en la macro ahi es cuando salta el error, peroooooo si solo renombro las hojas y no las renombro en la macro ahi funciona, mi pregunta es: porque si la macro no esta en la hoja1 y hoja2(del libro), no de nombre sino de cuando uno crea un libro no funciona? y como lo puedo corregir ya que cuando uso el editor para ver la macro en mi libro veo que si bien yo nombre como hoja 1 y hoja 2 dos hojas nuevas, en el editor figuran como hojas 17 y 18 respectivamente.

Gracias.

Saludos, Juan.

Invitado Cacho R
publicado

Mi estimado Juan:

No estás comprendiendo la diferencia entre el codName y el Name de una hoja de Excel... Mira, haz lo siguiente:

a) Crea un libro nuevo con una sola hoja;

B) Cámbiale el nombre a la hoja y llámala "Juan", por ejemplo;

c) Ahora sí: ¡vamos al editor de Visual Basic for Application!

d) Localiza -generalmente a la izquierda de la pantalla- el Explorador de Proyectos (método abreviado: Ctrl+R)

e) Allí deberías visualizar el siguiente objeto: Hoja1 (Juan), ¿lo ves por allí cercano al ThisWorkbook?

f) Precisamente Hoja1 es el codName de la hoja y Juan es el Name de la hoja.

Entonces: en una macro sería equivalente referir Sheets("Juan"), que Worksheets("Juan"), ó -tan solo- Hoja1.

Las ventajas de ello se caen de maduras: podrías permitir que el usuario de un libro cambie el Name de una hoja "todo lo que quiera", pues -internamente- el codName de la hoja seguirá siendo Hoja1: ¿Entiendes la idea?...

A partir de estos conceptos te sugeriría que revises la macro presentada y adviertas donde te estás equivocando en la adaptación.

Si tienes alguna otra dificultad: no dudes en subir una muestra de tu libro real para darte otra mano.

Saludos, Cacho R.

publicado

Hola Cacho R, claro que no entiendo mucho porque soy mas que novato en esto pero realmente con gente que colabora y explica como lo haces vos es mucho mas facil, ahora entendi el concepto, gracias nuevamente por tus "clases" y ya me pongo en marcha para modificarla como lo necesito.

Atte Juan, Saludos.

Archivado

Este tema está ahora archivado y está cerrado a más respuestas.

×
×
  • Crear nuevo...

Información importante

Echa un vistazo a nuestra política de cookies para ayudarte a tener una mejor experiencia de navegación. Puedes ajustar aquí la configuración. Pulsa el botón Aceptar, si estás de acuerdo.