Bugs dans Excel ActiveX de zones de liste déroulante?

J'ai remarqué que je reçois toutes sortes d'erreurs gênantes lorsque:

  • J'ai ActiveX comboboxes sur une feuille de calcul (pas un formulaire excel)
  • Comboboxes avoir le code d'événement lié à eux (par exemple, événements onchange)
  • - Je utiliser leurs listfillrange ou linkedcell propriétés (compensation de ces propriétés semble soulager beaucoup de problèmes)
  • (Je ne sais pas si c'est lié) mais il y a de la validation des données sur le linkedcell.

J'ai un programme assez complexe de l'application excel fait une tonne de gestion des événements et utilise un grand nombre de contrôles. Au fil des mois, j'ai essayé de traiter avec une variété de bugs de traiter avec ces zones de liste déroulante. Je ne me souviens pas de tous les détails de chaque instance de maintenant, mais ces bugs ont tendance à impliquer le pointage de l'listfillrange et linkedcell propriétés à des plages nommées, et ont souvent à voir avec la zone de liste modifiable événements déclenchant à des moments inappropriés (comme lors de l'application.enableevents = false). Ces problèmes semblaient grossir dans Excel 2007, alors que j'avais à donner sur ces zones de liste déroulante entièrement (j'utilise maintenant les zones de liste déroulante figurant dans les formulaires utilisateur, plutôt que directement sur les feuilles).

Quelqu'un d'autre a vu des problèmes similaires? Si oui, était-il une solution élégante? J'ai cherché avec Google et jusqu'à présent n'ont pas repéré quelqu'un avec des problèmes similaires.

Certains des symptômes que j'ai vu sont:

  • Excel de la plante lorsque je démarre (implique combobox_onchange, listfillrange->plage nommée dans une autre autre feuille, et workbook_open interactions). (remarque, j'ai aussi eu quelques validation des données sur les cellules liées dans le cas où un utilisateur a modifié directement.)
  • Rendu Excel bugs (généralement lorsque la liste déroulante de la boîte de changements, certaines cellules à partir d'une autre feuille d'obtenir tirées au hasard sur le haut de la feuille) Parfois, il s'agit de l'écran clignote entièrement à une autre feuille pour un moment.
  • Excel perdre son esprit (ou plutôt, la pile d'appel) (lié au premier point). Parfois, quand une fonction modifie une propriété des comboboxes, la zone de liste déroulante de l'événement onchange feux, mais elle ne renvoie jamais le contrôle à la fonction qui a causé le changement en premier lieu. Le combobox_onchange événements sont déclenchés même lorsque l'application.enableevents = false.
  • Événements de tir quand ils ne devraient pas (j'ai posté une autre question sur stack overflow y sont associés).

À ce point, je suis assez convaincu que ActiveX comboboxes sont le mal incarné et n'en vaut pas la peine. J'ai changé d'inclure ces zones de liste modifiables à l'intérieur d'un objet userform module à la place. Je préfère les inconvénients des utilisateurs avec popup formes qu'au hasard des artefacts visuels et de s'écraser (avec perte de données).

n'est-il pas plus de chances d'être d'un bug dans votre code, plutôt que d'Excel?
Mitch: j'ai soigneusement passais à travers l'exécution de code. Ce n'est certainement Excel problèmes. Quand j'ai dit que Excel gouttes de la fonction stack je ne peux pas vraiment l'expliquer d'une autre façon. Et Excel ne doit pas se bloquer, peu importe à quel point quelqu'un de macros en mal.
Mitch, si vous voulez voir un exemple de bug je n'document de plus de vigilance et de jeter le blâme sur Excel, voir stackoverflow.com/questions/1263394/... -- je n'ai pas disparu dans autant de détails ici parce que je soupçonne qu'il ya un problème plus général avec l'activex zones de liste modifiables.

OriginalL'auteur Kimball Robinson | 2010-02-25