** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - VBA INSTRUCCIONES IF ANIDADAS
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoVBA INSTRUCCIONES IF ANIDADAS

 Responder Responder
Autor
Mensaje Invertir el orden de clasificación
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Tema: VBA INSTRUCCIONES IF ANIDADAS
    Enviado: 07/Mayo/2020 a las 22:34
Pues algo similar a 

 Range("A3").Formula = "=IF($A$2=""España"",""Ole"", ""Buuuuuuu"")"



Ten en cuenta que desde VBA se funciona en inglés, por lo que tanto el comando (if en lugar de si) como los separadores (coma en lugar de punto y coma) deben ir de acuerdo a la configuración en inglés

Un saludo.
El Búho es un pajarraco
Arriba
Fran2k Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 06/Mayo/2020
Localización: España
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 07/Mayo/2020 a las 13:55
Buenos días,

Gracias por tu ayuda.
Y si cuando cambie el valor de la celda A2, en vez de borrarme la celda A3 quiero que me la recalcule siendo el contenido de A3 una fórmula+lista desplegable del tipo =SI($A$2="España";"ole";$C$1:$C$5), ¿qué debo poner?
Fran
Arriba
Jordi-Albert Ver desplegable
Colaborador
Colaborador
Avatar

Unido: 06/Abril/2006
Localización: Alemania
Estado: Sin conexión
Puntos: 4323
Enlace directo a este mensaje Enviado: 07/Mayo/2020 a las 05:34
Si el error es como dice Luis, añadd

Application.enableEvents =False

Al inicio de la función y

Application.EnableEvents = True

al final
Nota: Jordi-Albert es, todo él, un nombre. Mi nombre
Arriba
lbauluz Ver desplegable
Administrador
Administrador
Avatar

Unido: 29/Marzo/2005
Localización: La Gloria
Estado: Sin conexión
Puntos: 3849
Enlace directo a este mensaje Enviado: 07/Mayo/2020 a las 01:00
Buenas

Asi a ojo lo que tienes es:

Si cambia un dato en la hoja ejecuta esta funcion, donde se cambia un dato en la hoka... por lo cual se ejecuta la funcion, que cambia un dato en la hoja, por lo que se ejecuta la funcion.... y asi hasta saturar la memoria,de ahi el error que te da.

En otras palabras, en cuanto haces un cambio en la hoja generas un bucle infinito que satura la memoria.



Prueba algo asi

If Target.Value = Range("A1").Value And Range("A2").Value <> "" Then
    Range("A2").Value = ""
End If
If Target.Value = Range("A2").Value And Range("A3").Value <> "" Then
    Range("A3").Value = ""
End If


Con eso que he hecho evitas cambiar lo que ya esta cambiado, por lo que no se llama otra vez la funcion

Por ciert, tienes que comparar siempre value, como te he annadido

Un saludo.

Luis
El Búho es un pajarraco
Arriba
Fran2k Ver desplegable
Nuevo
Nuevo
Avatar

Unido: 06/Mayo/2020
Localización: España
Estado: Sin conexión
Puntos: 0
Enlace directo a este mensaje Enviado: 06/Mayo/2020 a las 15:04
Buenos días a todos,
Necesito hacer un Excel con funciones en VBA y no tengo mucha experiencia… a ver si alguien me puede echar un cable.
Os pongo en situación resumiendo al máximo: tengo tres celdas A1, A2 y A3, todas ellas son celdas con listas desplegables. Los valores de la lista desplegable de A2 dependen del valor que haya elegido en A1. Del mismo modo, los valores de la lista desplegable de A3 dependen del valor que haya elegido en A2. Además, necesito que al cambiar el valor seleccionado en la celda A1 me borre el dato seleccionado en las celdas A2 y A3. Hasta aquí lo he conseguido hacer. Ahora bien, también quiero que al cambiar el valor seleccionado en la celda A2 me borre el dato seleccionado en la celda A3, y esto no soy capaz de conseguirlo. He puesto la secuencia de comandos siguiente:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target = Range("A1") Then
Range("A2").Value = ""
End If
If Target = Range("A2") Then
Range("A3").Value = ""
End If
End Sub

Y me da el siguiente error: “Se ha producido el error “28” en tiempo de ejecución: Espacio de pila insuficiente.”
¿alguien sabe cómo solucionarlo y me puede echar una mano?. Muchas gracias. Un saludo.


Editado por Fran2k - 06/Mayo/2020 a las 15:09
Fran
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable