¿Cómo puedo colocar con una macro los distintos valores según lo que se elija en una lista desplegable?

Pues tengo una duda, en una hoja de excel tengo una lista desplegable en la celda B1, dependiendo de que opción se elija deben aparecer en las celdas E2 hacia abajo los valores que le corresponden, yo comencé a realizarlo con un select case como éste:

Select Case Range("B1").value
      Case "Postre"

               Range("E2").Value="duraznos"

               Range("E3").Value="fresas"

     Case "comida"
               Range("E2").Value = "sopa"
               Range("E3").Value = "carne"
               Range("E4").Value = "tosdadas"

     Case "Agua"

               Range("E2").value="limon"

End Select

Todo esta bien cuando selecciono la opción "Agua" si me coloca "limon", pero cuando selecciono comida o postre mi excel deja de funcionar, no se si el problema se debe a que tiene más de un Range. Por favor si me podrían ayudar con ésta duda que tengo.

1 Respuesta

Respuesta
3

Mencionas que tienes la lista desplegable en una hoja.

Entonces aclara por favor donde tienes este código, en un modulo, en un botón, un la hoja... es decir debes dejar la macro con su encabezado.

Si se trata de Worksheets_Change seguramente te faltan algunas instrucciones,

Elsa

El código  lo tengo dentro de una hoja, osea:

Private Sub Worksheet_Change(ByVal Target As Range)

Select Case Range("B1").value
      Case "Postre"

               Range("E2").Value="duraznos"

               Range("E3").Value="fresas"

     Case "comida"
               Range("E2").Value = "sopa"
               Range("E3").Value = "carne"
               Range("E4").Value = "tosdadas"

     Case "Agua"

               Range("E2").value="limon"

End Select

End Sub

Saludos :)

Estas utilizando el evento 'Change', es decir que se ejecuta ante cualquier cambio en la hoja... es decir al cambiar la celda B1 pero también se vuelve a ejecutar al cambiar E2, E3, etc y se queda bloqueado con un cambio tras otro.

Entonces debes colocar esta instrucción en negrita al inicio:

Private Sub Worksheet_Change(ByVal Target As Range)

'solo se ejecuta ante cambios en B1

If Target.Address <> "$B$1" Then Exit Sub

Select Case Range("B1").value

'sigue tu código

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas