/ / Activer / désactiver la liste déroulante Excel 2007 - excel-vba, excel-2007, controls, vba, excel

Activer / désactiver la liste déroulante Excel 2007 - excel-vba, excel-2007, controls, vba, excel

Je dois interdire à l'utilisateur de sélectionner une valeur dans une commande de liste déroulante Excel 2007 insérée via le menu Développeur par condition. Maintenant, je n'ai réussi qu'à afficher / masquer le contrôle.

ActiveWorkbook.Worksheets("summary").Shapes("months").Visible = year <> ""

Est-il possible de l'activer / le désactiver à la place?

Réponses:

2 pour la réponse № 1

Cela n'entraîne pas le contrôle "typique" activé / désactivé que vous obtiendriez si vous utilisiez une liste déroulante ActiveX plutôt qu'une liste déroulante Formulaires, mais cela empêche l'utilisateur d'y accéder:

Sub ChangeState()

Dim shp As Shape
Set shp = ActiveWorkbook.Worksheets("summary").Shapes("months")
shp.ControlFormat.Enabled = Not shp.ControlFormat.Enabled

End Sub

1 pour la réponse № 2

J'avais les mêmes problèmes avec MS Access.

L'état (activé / désactivé) est différent de la présentation (couleur d'arrière-plan = gris)

La façon dont j'avais l'habitude de contourner cela était de faire les deux:

Dim enabled As Boolean
enabled = year <> ""

ActiveWorkbook.Worksheets("Sheet1").Shapes(1).Enabled = enabled

If enabled Then
ActiveWorkbook.Worksheets("Sheet1").Shapes("months").BackColor = rgbGrey
Else
ActiveWorkbook.Worksheets("Sheet1").Shapes("months").BackColor = rgbWheat
End If

0 pour la réponse № 3

J'ai trouvé ce que le contrôle de liste déroulante peut être désactivé par

ActiveWorkbook.Worksheets("summary").DropDowns("months").Enabled = year <> ""

mais malheureusement il ne sera pas grisé pour montrer visuellement son état.