Saltar al contenido

Macro en función de un resultado


Recommended Posts

publicado

Buenos días:

Ante todo saludados y agradeceros lo que, poco a poco he ido aprendiendo en este foro, aunque de forma anónima,

Este es mi primer post y entro preguntando y con una consulta ya que me encuentro atascado en una hoja y no se como solucionar mi problema, os cuento:

Tengo una hoja en la que dependiendo de la categoría profesional que se le ponga, permite poner dietas o no.

La Categoría se coge de una lista desplegable y la celda dietas tiene una validación de datos personalizada con formula que "mira" en una celda que número hay, el número viene de una función "O" que analiza anteriormente las categorías que se han introducido y solo muestra "VERDADERO" si se ha introducido "Oficial 1" o bien "Oficial 2" , dependiende que que el resultado sea uno u otro, hay una celda que, mediante la función "SI" pone un 0 si es FALSO ó un 1 si es VERDADERO, esa es la celda a la que apunta la validación de datos y que, de principio deja o no deja poner dietas en la celda correspondiente.

Mi problema es que si termino un cálculo y al empezar otro nuevo, pongo una categoría a la que no le corresponde tener dietas, si se me olvida borrar la celda dietas, estas se quedan.

¿Hay alguna forma de hacer una macro condicionada a la categoría o a una celda cualquiera que borre esas cantidades que se han quedado?

Os adjunto una hoja con los datos introducidos para que veáis a lo que me refiero.

Muchísimas gracias

Un saludo

Dietas.xls

publicado

Hola.

Pega este codigo en la hoja1:

Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Address <> "$D$5" Then Exit Sub
If [M5] <> 1 Then [G5] = ""
End Sub

Un saludo.

publicado

Muchas gracias por las respuestas, ahora mismo lo pruebo

¿Puede que el archivo de problemas porque lo guarde como Excel 2007 y luego para subirlo aquí tuve que quitarle la x final?

En unos minutos lo subo de nuevo

Gracias

publicado

Hola de nuevo, os subo el archivo, esta vez guardado como Excel 2003, extensión .xls

Ya lleva puesto el código que muy amablemente me ha puesto Toldeman y funciona de maravilla :welcoming: :welcoming:

Y ahora, abusando de vuestra paciencia, es que lo tengo que poner en tres celdas diferentes y no se como extenderlo a las otras dos celdas, he probado de todas las formas que se me han ocurrido y no funciona en las dos celdas de debajo :orange::orange::orange:

¿me podrías decir como lo hago? por favor

Muchísimas gracias de nuevo

Un saludo

Dietas1.xls

publicado

Hola.

Prueba asi:

Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, Range("D5:D7")) Is Nothing Then Exit Sub
If [M5] <> 1 Then [G5] = ""
If [M6] <> 1 Then [G6] = ""
If [M7] <> 1 Then [G7] = ""
End Sub

Un saludo.

publicado

Hola fancalo

En efecto l problema estaba en que habías eliminado la x de la extensión y estaba tratando de abrirlo en 2003.

Por otra parte y respecto a tu pregunta. No te hace falta usar macros, si en la validación de las celdas dieta usas algo como

=IZQUIERDA(D5;3)="Ofi"

te es suficiente, en el adjunto tienes el ejemplo al completo.

Un saludo desde Vitoria

Validación_io_120420.zip

publicado

Gracias ioyama por tu respuesta, lo siento, eso me que indicas funciona para la primera parte del problema, es decir, la validación de datos es mucho mejor como tu me indicas que como yo la he hecho ya que carga de menos cálculos a la hoja, no obstante el problema que tenía, es que si dejo una cantidad en un cálculo anterior hecho para un Oficial 1, al cambiar la categoría a Secretaria, por ejemplo, me deja la cantidad que tenía puesta, y lo que buscaba es que en el momento que pusiese una categoría que no puede llevar diestas esas se borrasen.

Subo el archivo modificado con el código que me ha enseñado Toldeman y que funciona perfectamente

Un saludo desde Marbella

Dietas_Solucionado.xls

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.