Type de VBA

Cet article montrera l'utilisation de l'opérateur VBA TypeOf.

L'opérateur VBA TypeOf est utilisé pour déterminer le type d'un objet. Cela peut être utile pour activer ou désactiver les contrôles sur un formulaire VBA ou pour contrôler le flux de code en fonction du type d'objet utilisé.

Utilisation de TypeOf pour contrôler le code

Nous pouvons utiliser TypeOf pour nous assurer que la sélection effectuée est le type d'objet spécifique dont nous avons besoin - par exemple, nous pouvons vouloir sélectionner une plage, puis utiliser une instruction IF pour voir ce qui est sélectionné. Si une plage est sélectionnée, nous obtiendrons un message nous indiquant qu'une plage est sélectionnée, mais si une plage n'est pas sélectionnée, nous obtiendrons un message différent.

Sélectionnons quelques cellules sur notre feuille de calcul.

Maintenant, si nous exécutons la macro ci-dessous, on nous dira que nous avons sélectionné une plage.

12345678 Sélection de sous-test()Dim rng comme objetSi TypeOf Selection est une plage, alorsMsgBox "Une plage a été sélectionnée !"AutreMsgBox " Quelque chose d'autre est sélectionné "Fin siFin du sous-marin

Cependant, si nous ne sélectionnons pas une plage et sélectionnons autre chose - peut-être un graphique - puis exécutons la macro, nous obtiendrons un résultat différent !

Utilisation de TypeOf sur les contrôles de formulaire

VBA nous permet de créer des formulaires interactifs que l'utilisateur peut remplir et renvoyer des données au code à utiliser de différentes manières. Nous pouvons utiliser l'opérateur TypeOf pour déterminer le type de contrôles qui sont utilisés sur un formulaire.

Dans l'exemple ci-dessous, j'ai créé un formulaire utilisateur avec une variété de contrôles - quelques zones de texte, une zone de liste déroulante, 2 boutons d'option, 2 cases à cocher et 3 boutons de commande.

À l'aide du code ci-dessous, je peux déterminer le type de contrôles sur le formulaire en parcourant tous les contrôles du formulaire. J'ai utilisé la fonction TypeName pour renvoyer un message avec le type du contrôle, et j'ai utilisé une instruction VBA IF en utilisant le Type de fonction pour vérifier quel type de contrôle est sélectionné, puis une autre boîte de message pour renvoyer ce type de contrôle.

12345678910111213141516171819202122 Sous WhatControlType()Dim ctl comme objetPour chaque ctl In Me.ControlsMsgBox (TypeName(ctl))'Utilisez la fonction TypeOf pour déterminer le type de l'objet.Si TypeOf ctl est msforms.TextBox ThenMsgBox ("Le contrôle est une zone de texte.")ElseIf TypeOf ctl Is msforms.ComboBox ThenMsgBox ("Le contrôle est un ComboBox.")ElseIf TypeOf ctl Is msforms.Label ThenMsgBox ("Le contrôle est un Label.")ElseIf TypeOf ctl Is msforms.CommandButton ThenMsgBox ("Le contrôle est un bouton de commande.")ElseIf TypeOf ctl Is msforms.CheckBox ThenMsgBox ("Le contrôle est une case à cocher.")ElseIf TypeOf ctl Is msforms.OptionButton ThenMsgBox ("Le contrôle est un bouton Option/Radio.")AutreMsgBox ("L'objet est un autre type de contrôle.")Fin sictl suivantFin du sous-marin

Ce type de code peut être très utile si l'on souhaite activer ou désactiver des contrôles. Dans le code ci-dessous, lors de la première ouverture du formulaire, les cases d'option et les cases à cocher sont désactivées.

123456789101112 Private Sub UserForm_Initialize()Dim ctl comme objetPour chaque ctl In Me.ControlsSi TypeOf ctl est msforms.CheckBox Thenctl.Enabled = FalseElseIf TypeOf ctl Is msforms.OptionButton Thenctl.Enabled = FalseAutrectl.Enabled = TrueFin sictl suivantFin du sous-marin

Pour activer les boutons d'option et les cases à cocher, j'ai écrit du code supplémentaire derrière le bouton Activer les contrôles.

12345678910 Sous-cmdEnable_Click () privéDim ctl comme objetPour chaque ctl In Me.ControlsSi TypeOf ctl est msforms.CheckBox Thenctl.Enabled = Non ctl.EnabledElseIf TypeOf ctl Is msforms.OptionButton Thenctl.Enabled = Non ctl.EnabledFin sictl suivantFin du sous-marin

Maintenant, lorsque nous cliquons sur le bouton Activer les contrôles, si les contrôles sont désactivés, ils seront activés et s'ils sont activés, ils deviendront désactivés. Ceci est réalisé en utilisant le Pas Opérateur qui nous permet de basculer entre désactivé et activé.

wave wave wave wave wave