Excelguru Aide du site - L'utilisation d'un contrôle TreeView

Ceci est un tutoriel sur la création d'un contrôle simple Treeview sur un userform Excel. Aux fins de cet exemple, nous allons peuplant le contrôle TreeView avec des noms de feuille de calcul et les adresses des cellules avec des formules en eux.







Pour la facilité d'utilisation, je viens d'utiliser tous les noms d'objets par défaut que j'ai créé pour l'article, mais ne hésitez pas à les renommer dans votre propre instance. Rappelez-vous de mettre à jour les exemples de code pour refléter les noms des contrôles que vous faites cela pour.

Création de la structure sous-jacente:
Pour suivre l'exemple:
  • Créer un nouveau classeur frais
  • Ajouter quelques formules à feuilles 1 et 2. (Peu importe ce qu'ils sont, juste quelque chose qui est une formule)
  • Entrez le VBE
  • Ajouter un nouveau userform à votre classeur (nous reviendrons sur ce sujet)
  • Ajouter un nouveau module de code vide et placez le code suivant dans (ce qui sera utilisé pour lancer le userform):

Le résultat final:
Enregistrez le projet et revenir à l'interface Excel. Appuyez sur Alt + F8 et exécutez la macro « ufLaunch » pour afficher la userform. Tant que vous mettez des formules dans vos feuilles de calcul, les feuilles doivent avoir un petit signe + à côté d'eux, donc cliquer dessus pour les agrandir. Cliquez sur le nom de la feuille ou les noms de gamme, et de regarder l'étiquette en bas à gauche du spectacle formUtilisateur ce nœud que vous avez sélectionné. Une capture d'écran de la forme finie est représentée ci-dessous:

Excelguru Aide du site - L'utilisation d'un contrôle TreeView

Le code a expliqué:
Le userform utilise quatre routines, qui sont répartis comme suit:

Sous UserForm_Initialize (privé)
Le but de cette routine est de définir les valeurs par défaut souhaitées sur le userform quand il est chargé. Bien que je normalement définir les valeurs par défaut de mes contrôles en vue de la conception, j'ai choisi d'aller dans cette voie pour permettre une explication avec juste le glisser-déposer des contrôles standards. Cette routine chaque defaults de contrôle, puis appelle la routine Treeview_Populate pour remplir le contrôle TreeView.

Bien qu'il n'y ait pas beaucoup de mystère dans ce qui précède, il y a une ligne dans ce rien de la valeur de routine, et qui est celui qui définit la propriété LineStyle du TreeView « tvwRootLines ». Cette propriété est d'être défaut à « tvwTreeLines » lorsque vous déposez le contrôle sur le userform. Dans cet état, cependant, nous ne recevons pas les +/- indicateurs, ce qui signifie que vous devez cliquer deux fois sur un nœud pour l'obtenir pour développer ou réduire. Personnellement, je trouve la vue +/- beaucoup plus intuitive, que l'utilisateur n'a pas besoin de double cliquer sur le nœud de savoir s'il y a quelque chose en elle. (Ils peuvent encore cliquer deux fois pour développer ou réduire le nœud s'ils veulent bien.)







Sous TreeView_Populate (privé)
Cette routine remplit en fait tous les nœuds de l'arborescence; dans ce cas, avec le nom de chaque feuille dans le classeur et les plages qui contiennent une formule.
La compensation du contrôle et une boucle à travers les feuilles et les plages doivent être explicites, je ne vais pas les explorer en détail, mais je ne veux regarder la méthode pour ajouter des nœuds TreeView.

Lorsque vous ajoutez des nœuds à l'arborescence, nous avons besoin de créer une relation parent / enfant. Dans ce scénario, chaque feuille est un parent, et les plages sont les enfants qui ont donné naissance des parents. (Vous pouvez prendre à un autre niveau, en faisant la formule actuelle, la valeur et les polices enfants des gammes aussi bien si vous avez choisi. Dans ce cas, la gamme serait l'enfant de la feuille, mais le parent de l'autre des données dessous.)

Pour ajouter un nœud parent de haut niveau, il faut attribuer à la fois une clé et du texte au nœud. La clé doit être unique, et le texte est ce qui apparaît dans l'arborescence sur le userform. Dans l'exemple ci-dessus, les feuilles sont ajoutées à l'arborescence en utilisant le code suivant:

dire Me.TreeView1.Nodes.Add clé: = "Sheet1", Texte: = "Sheet1"

Chaque fois que vous voulez ajouter un nœud de niveau supérieur à la userform (Feuil1, Feuil2 et Feuil3 dans l'exemple), vous devriez utiliser la construction de codage ci-dessus.
Pour ajouter des nœuds enfants, la procédure est légèrement différente. Nous utilisons toujours la méthode d'ajout, et nous avons encore besoin d'une clé unique, mais nous devons aussi fournir la clé du nœud parent (par rapport) et la relation (tvwChild). Dans l'exemple, le code pour ajouter les nœuds enfants (sous la direction des sauts de ligne) ressemble à ceci:

à savoir Me.TreeView1.Nodes.Add relative: = "Sheet1", relation: = tvwChild clé: = "Sheet1, $ C $ 8", texte: = "Rage $ C $ 8"

Donc, pour relier le nœud enfant sous le nœud parent, la « relative » doit être égale à la « clé » de nœud parent, et la relation doit être réglée sur « tvwchild ». Pour rendre le nœud enfant valide, il doit aussi avoir sa propre clé unique de tout autre dans l'arborescence (pas seulement les autres enfants). Ce que je l'ai fait ici a été mis en place une clé de composé qui est composé de la clé et la gamme actuelle des parents, séparés par une virgule. Pourquoi? Dans un projet, je construit avec trois parents / enfants (couches de feuilles, Plage, données), j'étais facilement en mesure de le diviser et voir ce que je voulais. Par exemple, si je voulais activer la plage sélectionnée, je partage le contenu de l'étiquette dans un tableau, utilisez les composants individuels pour activer la plage que je veux. Un exemple de ceci est montré dans la section Renseignements supplémentaires à la fin de l'article.

Sous CommandButton1_Click (privé)
Ce bouton de commande décharge simplement le userform.

Conclusion:
Une fois compris, le contrôle TreeView est en fait assez facile à installer et à utiliser. Bien que cet exemple a mis l'accent sur l'utilisation du contrôle TreeView dans un userform Excel, il pourrait tout aussi bien être appliqué dans un Access, Word ou Powerpoint solution, ou toute autre application qui prend en charge l'utilisation de VBA. (En fait, ce contrôle peut effectivement être accessible à partir d'autres langues.)

Information supplémentaire
Ajout d'images à l'arborescence:
Le contrôle TreeView est utilisé dans beaucoup d'endroits dans Microsoft Windows, et plusieurs fois a des images qui lui est associée. Juste un exemple de ceci est la capture ci-dessous à partir de l'explorateur Windows:

Excelguru Aide du site - L'utilisation d'un contrôle TreeView

Comme l'image ci-dessus, vous pouvez ajouter des images à votre contrôle TreeView, et mon ami Colo a une grande page sur le faire //puremis.net/excel/code/080.shtml"]here.

En utilisant le formulaire Treeview pour aller à la plage sélectionnée:
La routine suivante ajouterait des fonctionnalités supplémentaires à notre exemple, en prenant l'utilisateur de la feuille de calcul ou de la plage sélectionnée. Il va également dans le module formUtilisateur de notre exemple, mais vous aurez besoin d'ajouter un nouveau bouton pour déclencher:

Syndication:
Cet article a également été publié à l'Association Office Professional Developers (plus en ligne).

Si vous avez déjà un compte, et tout simplement pas encore connecté, qu'est-ce que vous attendez? Connecte-toi maintenant!







Articles Liés