Selección de respuesta automática Excel

Estimado Experto:
Tengo en una Macro de Excel el siguiente código, que me pregunta la opción que quiero, y que llama a otra macro que realiza una función.
Mi pregunta es, (si es posible) que recoja la respuesta de una celda en concreto, es decir, pondría en una celda de alguna hoja el numero concreto (1, 2, 3 o 4), y que este código recoja la respuesta de esa celda.
Muchísimas Gracias de antemano.
Saludos


Sub ElijeOpcion()
Dim Answer As Byte
Answer = CByte(InputBox("Elije una opción"))
Select Case Answer
Case 1
Call Macro1
Case 2
Call Macro2
Case 3
Call Macro3
Case 4
Call Macro4
End Select
End Sub

1 respuesta

Respuesta
1

Puedes utilizar el evento change de la hoja, así cada vez que una celda de la hoja cambie de valor, se revisará que la celda sea la indicada y su valor y dependiendo del valor ejecutar una macro.

Private Sub Worksheet_Change(ByVal Target As Range)    Dim CeldaRespuesta As String    Dim Answer As Byte    CeldaRespuesta = "A1" 'Poner la celda donde se escribirá la respuesta(1,2,3 o 4)    If Target.Cells.Count = 1 Then 'Valida que solo una celda se ha modificado        If Not Application.Intersect(Target, Me.Range(CeldaRespuesta)) Is Nothing Then            Answer = CByte(Me.Range(CeldaRespuesta))            Select Case Answer                Case 1                    Call Macro1                Case 2                    Call Macro2                Case 3                    Call Macro3                Case 4                    Call Macro4            End Select        End If    End IfEnd Sub

Este código lo pones en el código de la hoja donde vas a capturar la respuesta, debes cambiar el valor de la variable CeldaRespuesta por la que quieras, ahí te puse que sea la A1 pero la puedes cambiar.

Estimado Experto:

El código que me proporciona funciona de maravilla, pero necesito que se ejecute en modo manual, cuando ejecute la macro manualmente y no cuando cambie el valor de la celda. He intentado que funcionase pegando el código en un Modulo, pero al ejecutar la macro, me lanza el siguiente error, "el uso de la palabra Me no es válido". ¿Que tendría que modificar en su código, para que se ejecutase en modo manual y no al cambiar el valor de la celda?

Muchísimas Gracias por su ayuda.

Sub EligeOpcion()    Dim CeldaRespuesta As String    Dim HojaCeldaRespuesta As String        Dim Answer As Byte            HojaCeldaRespuesta="Hoja1" 'Poner la hoja de la celda donde se escribirá la respuesta(1,2,3 o 4)    CeldaRespuesta = "A1" 'Poner la celda donde se escribirá la respuesta(1,2,3 o 4)    Answer = CByte(ThisWorkbook.Sheets(HojaCeldaRespuesta).Range(CeldaRespuesta))    Select Case Answer                    Case 1            Call Macro1        Case 2            Call Macro2        Case 3            Call Macro3        Case 4            Call Macro4    End SelectEnd Sub

Este seria el código que pondrías en el modulo. El código anterior te marcaba error porque la palabra Me hace referencia a la hoja donde esta el código, pero si el código lo pones en un modulo no puedes usar la palabra Me ya que el modulo no es una hoja.

Estimado Experto:

Su código funciona perfectamente, es justo lo que estaba buscando. Le estoy muy agradecido por su ayuda, no sólo me ha ayudado con el código, sino también me ha explicado porque el anterior código me tiraba error al insertarlo en un Módulo.

Una vez más, un millón de gracias.

Reciba un cordial saludo.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas