Cet article montrera l'utilisation de la fonction VBA TypeName.
Le VBA NomType La fonction est utilisée pour déterminer le type de données stockées dans une cellule, ou le type d'un objet sélectionné - par exemple une feuille de calcul, une plage ou une cellule, ou un contrôle sur un formulaire.
Détermination du type de données dans une cellule
Pour déterminer le type de données dans une cellule, nous pouvons utiliser la fonction TypeName avec la propriété Cells.
123 | Sous TestCellDataType()MsgBox "Le type de données dans " & Cells(3, 2).Address & " is " & TypeName(Cells(3, 2).Value)Fin du sous-marin |
Si nous exécutons ce code ci-dessus avec la feuille de calcul ci-dessous, la boîte de message nous indiquera quel type de données se trouve dans la cellule.
Détermination du type d'objet sélectionné
Nous pouvons également utiliser TypeName pour déterminer quel type d'objet a été sélectionné dans une feuille de calcul - une plage ou un graphique par exemple.
123 | Sélection de sous-test()MsgBox "Vous avez sélectionné un " & TypeName (Sélection)Fin du sous-marin |
Ou, si nous sélectionnons un graphique :
Nous pouvons explorer encore plus loin et sélectionner les objets dans le graphique, et la macro renverra ce que nous avons sélectionné.
Tout cela peut être très utile dans la construction de notre projet VBA soit pour contrôler le flux du code, soit pour empêcher les erreurs de se produire en testant pour s'assurer que le bon type d'objet est sélectionné, ou que le bon type de données est entré dans une cellule .
Utilisation de TypeName 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 TypeName 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 avec une instruction VBA IF pour vérifier quel type de contrôle est sélectionné.
123456 | Sous WhatControlType()Dim ctl comme objetPour chaque ctl In Me.ControlsMsgBox "Le contrôle est un " & TypeName(ctl)ctl 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 TypeName(ctl) = "CheckBox" Alorsctl.Enabled = FalseElseIf TypeName(ctl) = "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 TypeName(ctl) = "CheckBox" Alorsctl.Enabled = Non ctl.EnabledElseIf TypeName(ctl) = "OptionButton" Thenctl.Enabled = Non ctl.EnabledFin sictl suivantFin du sous-marin |
La fonctionnalité de ce code peut également être créée à l'aide de l'opérateur VBA TypeOf.