Macro al escoger valor en lista, sin apretar ENTER

Buenas,
He buscado como hacer una macro al escoger un valor de una lista de validación y las respuestas que eh encontrado no me funcionan completamente,
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Address = "$A$1" Then
        Select Case Target
        Case "SI"
            MsgBox ("entra por SI")
            Range("B" & Target.Row).Value = "10"
            Range("B" & Target.Row).NumberFormat = "0.0"
         Case "NO"
            MsgBox ("entra por NO")
            Range("C" & Target.Row).Value = "10"
            Range("C" & Target.Row).NumberFormat = "0.00"
        End Select
    End If
End Sub

otra forma que tampoco me funciona:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
            If Target.Value = "SI" Then
                MsgBox ("entra por SI")
            Range("B" & Target.Row).Value = "10"
            Range("B" & Target.Row).NumberFormat = "0.0"
            Else
                If Target.Value = "NO" Then
                    MsgBox ("entra por NO")
            Range("C" & Target.Row).Value = "10"
            Range("C" & Target.Row).NumberFormat = "0.00"
                End If
            End If
    End If
End Sub

Funciona todo bien solo si escribo SI o NO y apretó la tecla ENTER o flechas del teclado para salir de la celda,
si escogo por una lista de validación funciona solo MsgBox pero no así las otras sentencias...

1 Respuesta

Respuesta
1
Me pregunto si entendés lo que hace cada rutina. Porque es correcta.
Para la 1ra, necesitás que tener en A1 una lista validada (del menú Datos, Validación, Lista), con posibles valores: SI y NO
Para la 2da, la misma lista está colocada en las celdas A1 hasta A10 y con los mismos valores.
La rutina se coloca en la hoja donde estás trabajando. Si fuese Hoja1, al entrar al Editor, seleccioná con doble clic el objeto HOJA1 en el panel que verás a tu izquierda.
Allí se copia UNA SOLA de estas rutinas.
Al seleccionar algún valor en el desplegable, te aparecerá el mensaje (es opcional, podes quitarlo) y se coloca en col B y C de la misma fila, los datos que figuran en el código.
Sdos. Comentame si con estas aclaraciones las pudiste hacer funcionar.
Elsa
PD) Mi mejor recomendación para vos:
http://aplicaexcel.galeon.com/manual_VBA.htm
Ante todo gracias por la atención...
Ok, si eh echo lo que me dices, y aclarar que efectivamente no son las mismas rutinas, (como estuve haciendo varias pruebas)... es correcto la 1ra funciona solo con la celda A1 y la 2da en todo el rango A1:A10 con lista de validación SI y NO, las rutinas no las coloco juntas en la misma hoja...
Las eh colocado en el editor en la Hoja que le corresponde...
El mensaje lo colocaba para ver si entraba y así lo hace, eso siempre funciona ya sea por escoger la lista o escribir directamente en la celda de la validación, también le echo un seguimiento por puntos de interrucion (F9) y si entra al Worksheet_Change...
Lo que no hace es las sentencias con Range(...), solo las realiza si escribo por teclado SI o NO y doy ENTER... en ambas rutinas...
Reemplazalas por:
Target.offset(0,1) = 10
Target.offset(0,1).numberformat= "0.00"
Lo mismo para offset(0,2), es decir la col C
Sdos
Elsa
Bueno eh descubierto el problema, aunque no se porque sucede...
En verdad es algo muy curioso, trataré de explicarlo para alguien que le sucede lo mismo:
Esta rutina quiero implementarla sobre una plantilla archivo1.xlt, lo raro es que desde el momento que abro este archivo1.xlt no funcionan las rutinas que me hemos probado de ninguna de sus formas, ya sea en ese mismo archivo o en otro archivo archivo2.xls u cualquiera que lo coloque... no es más que cierre el archivo1.xlt para que si funcione en archivo2.xls...
Lo más raro aun es que esto solo me lo hace en 2 maquinas que hasta ahora eh probado, en otras si funciona perfectamente aunque este abierto ambos...
Todas las maquinas en las que lo he probado son office 2003 (algunas español otras ingles, pero en las 2 que no me funcionan si son español), con windows XP Professional...
Que tiene mi archivo1.xlt nada fuera de lo común, fórmulas para cálculos de una factura sumatorias, logo, etc... de macro tiene en la hoja1 esta rutina y una de un botón que guarda valores de la plantilla en otro archivo y un module1 solo una función que me dice si un archivo esta abierto o cerrado, nada más... ojo que ya dije que este mismo archivo si funciona en otras maquinas...
Bueno solución me cambia de escritorio de trabajo, jejejjeje
No ya en serio ojala alguien sepa porque sucede esto, mi pena es que no funcione en cualquier equipo...
De todas maneras las respuestas dadas si funcionan correctamente, GRACIAS...
Tu me dirás si doy por terminado este tema, ¿o tienes alguna solución?... :S
No tengo nada más para decir, salvo comentarte que no es la primera vez que alguien menciona que el mismo archivo responde de diferente modo en distintos equipos.
Se me ocurre que puede ser la versión Excel que instalan (quizás versiones reducidas) - Desconozco qué funciones contiene tu macro.
Por lo tanto quizás convenga reinstalar una buena versión Excel 2003
Sdos
Elsa

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas