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).
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
Vous devez vous connecter pour publier un commentaire.
Je n'ai pas de réponse définitive pour vous, mais je peux vous dire que j'ai cessé d'utiliser ListFillRange et LinkedCell pour les contrôles ActiveX y a environ 10 ans. Je ne me souviens pas précisément quelles sont les problèmes que j'ai rencontré. Je me souviens juste venue à la conclusion que le peu de temps qu'ils ont sauvé de moi ne vaut pas le mal au cerveau de essayer de traquer les bugs. Alors maintenant, j'remplir les contrôles à l'aide de code et de traiter avec la sortie dans les événements.
OriginalL'auteur Dick Kusleika
Mon active-x combo fonctionne très bien quand mon Dell est à quai mais redimensionne pour une plus grande police à chaque fois qu'il est activé lorsque le Dell est déconnecté de la station - très étrange. J'ai ajouté le redimensionnement de code qui fonctionne lorsqu'il est déconnecté de la station, mais à la fois .la hauteur et la .scaleheight échouer lorsque la station d'accueil lorsqu'il est déclenché par programmation (même étranger).
Ensuite, j'ai ajouté mes propres enableevents-comme commutateur de sorte que le redimensionnement se produit uniquement lorsqu'un utilisateur sélectionne une zone de liste déroulante valeur, pas quand tout est touchée lorsqu'une macro est en cours d'exécution.
Enfin qui semble fonctionner, si ancrée ou non, que ce soit déclenchée par l'utilisateur ou au cours d'une procédure. Nous allons voir si elle contient...
OriginalL'auteur mike
J'ai une réponse partielle pour les utilisateurs de Dell, et pour votre mise en forme du problème
La mise en forme et le problème d'affichage est un autre-mais-sans-papiers problème dans Excel.
De nombreux moniteurs à écran plat (y compris les écrans d'ordinateur portable) sont en mesure de rendre les polices correctement dans les contrôles de zone de texte sur une feuille de calcul Excel: vous avez une version douce de ce problème.
Notre société a récemment mis à niveau vers la nouvelle (et bien plus!) surveille, et je peux au dernier utiliser des zones de texte, les étiquettes et les zones de liste déroulante dans des feuilles de calcul. Nos vieux écrans Samsung affiche des contrôles de texte correctement, mais tout manuel ou VBA piloté par les mises à jour ont entraîné une illisibles pêle-mêle de chevauchement de caractères.
Les listes n'ont pas le problème: c'est la 'zone de texte' une partie de votre zone de liste modifiable qui a le problème. Essayez la manipulation d'une liste dans VBA procédures de l'événement: c'est une bidouille, mais ça marche.
Dans les Cellules de listes déroulantes de la Validation des Données des listes n'ont pas le problème. Si vous configurez une liste de validation pour une cellule, puis définissez les données messages d'erreur de validation pour les cordes à vide, vous pouvez saisir du texte en format libre dans la cellule; la liste déroulante est consultatif, pas de limites obligatoires-à-liste.
Le problème est parfois amélioré (mais jamais complètement fixe) en utilisant le Terminal ou le Système de polices dans votre Actif X contrôle.
Le problème est parfois amélioré (mais jamais complètement fixe) à l'aide de VBA un événement pour déplacer ou redimensionner votre Actif X contrôle de 0,75 mm.
Vérifier si votre ordinateur portable fabricant a publié une mise à niveau pour les pilotes d'affichage.
...Et c'est tout ce que je sais sur la police problème de rendu. Si Mike (avec son ordinateur portable de Dell) est à la lecture de ceci: Bonne chance avec ces solutions de contournement - au meilleur de ma connaissance, il n'existe pas de "réparer".
Le problème de stabilité a été l'un des principaux casse-tête pour moi jusqu'à ce que Excel 2003 est sorti: l'utilisation de tout Actif X contrôle de la feuille a été une source d'instabilité. Le Jury est encore sur les contrôles de zone de liste incorporé dans une feuille de, même dans Excel 2003: j'ai toujours éviter de les utiliser.
OriginalL'auteur Nigel Heffernan
Donc j'ai été confronté aux mêmes problèmes. J'ai eu un fichier avec des listes déroulantes sur lequel j'avais superposé la zone de liste déroulante pour lutter contre le problème de manque de lisibilité lors d'un zoom arrière trop. C'est ce que mon code ressemblait d'ABORD:
J'ai été confronté à toutes sortes de questions, mais surtout comme mentionné sur ce fil, le LinkedCell question était la plus grande. Ma sélection à partir du menu déroulant serait aller où sur la feuille que j'avais cliqué dernier, au lieu de la cellule, j'avais choisi la zone de liste déroulante à partir de, et dans le processus, aussi perturbant le code de la mesure la sélection. J'ai utilisé une simple LIGNE de code pour que mon programme ActiveX ne fonctionne que lorsque ses un menu déroulant. J'ai utilisé ce avant le LinkedCell commande est exécutée:
Donc mon code ressemble maintenant à ceci:
Incroyablement, cela a fonctionné. Et maintenant, ma feuille excel n'est pas défaillante plus. Espérons que cette aide.
OriginalL'auteur Sampat Kedarisetty
Pour cette raison, j'utilise des cellules avec les données de validation des listes lors de la mise des zones de liste modifiable sur une feuille de calcul.
Vrai sur plusieurs colonnes. Comme pour la taille du texte, il peut être assez petit, mais au moins elle s'adapte à la taille de zoom. J'ai eu des problèmes avec Active X à la fois parce que la liste déroulante texte n'a pas d'échelle avec le zoom et les utilisateurs se sont plaints.
OriginalL'auteur guitarthrower