2009-09-16 9 views
0

Y at-il moyen d'accéder (via VBA) aux propriétés d'un objet formulaire (à l'aide de la barre d'outils pré-2007 et de l'onglet développeur/insertion/2007) quand il est groupé?Impossible d'accéder aux objets de formulaire Excel via VBA lorsque les éléments sont groupés

Par exemple, vous pouvez normalement accéder à la propriété max d'un contrôle Spinner avec le code suivant:

Sheet1.Spinners("Spinner 1").Max 

OU

Sheet1.Shapes("Spinner 1").ControlFormat.Max 

près que je peux dire, la seule façon d'accéder à un l'article qui a été groupé est en utilisant la collection de formes, tels que:

Sheet1.Shapes("Group 1").GroupItems("Spinner 1") 

Le problème m est que lorsque je tente d'accéder à une propriété pour ce contrôle, comme

Sheet1.Shapes("Group 1").GroupItems("Spinner 1").ControlFormat.Max 

Je reçois l'erreur suivante: Erreur d'exécution « 1004 »: Impossible d'obtenir la propriété Max de la classe Spinner.

On dirait un problème assez simple, mais je suis un peu coincé. Peut-être existe-t-il un moyen de transformer l'objet en un objet de contrôle de spinner, puis d'y accéder?

Des suggestions?

Répondre

2

[Modifier: Je me suis trompé. La seule façon de fonctionner est d'utiliser Selection. Le code suivant fonctionnera:

Sheet1.Shapes("Group 1").GroupItems("Spinner 1").Select 
Selection.Max = 20 

De toute évidence, ce n'est pas idéal. Toute aide supplémentaire serait grandiose.]

Après un peu de cajolage, j'ai réussi à comprendre celui-ci. Pour accéder à un contrôle de formulaire qui est groupé, vous devez utiliser la collection GroupObjects (membre caché):

Sheet1.GroupObjects("Group 1").ShapeRange.GroupItems("Spinner 1").ControlFormat.Max 

espoir qui aide à toute autre personne qui pourrait courir dans cette question!

Questions connexes