2008-09-19 7 views
4

Le contrôle RefEdit inclus dans VBA est un peu bogué, mais il est bon pour mettre un formulaire lorsque vous souhaitez que les utilisateurs spécifient une ou plusieurs plages de cellules (c'est-à-dire Excel.Range objets).Alternative au contrôle RefEdit d'Excel pouvant être utilisé en dehors de VBA

Le problème principal est que vous ne pouvez utiliser le contrôle RefEdit sur un VBA UserForm (Microsoft states this, et mes tests le confirmer aussi). Je fais un complément Excel en utilisant Delphi, et je cherche une alternative au contrôle RefEdit.

Excel.Application.InputBox Type:=8 est une autre façon de sélectionner une plage de cellules, mais il est pas très facile à utiliser lorsque vous avez besoin de personnes pour sélectionner multiples plages de cellules sur une seule forme. La meilleure alternative réelle que j'ai pour le moment est d'appeler un formulaire VBA à partir de mon add-in Delphi, mais c'est loin d'être idéal.

Donc, idéalement, je pourrais faire avec un remplacement drop-in pour RefEdit - un que je peux utiliser sur un formulaire Delphi. S'il y en a un, ce n'est pas facile à trouver (j'ai cherché assez dur, et je n'ai pas été capable de trouver un remplacement de RefEdit pour Delphi, VB6 ou .NET).

A défaut de remplacement, je pourrais essayer de concocter ma propre alternative, mais je pense qu'il serait difficile, voire impossible, d'en faire un qui fonctionne aussi bien que RefEdit. RefEdit vous permet de "sélectionner" des cellules sans les sélectionner réellement: il utilise des fourmis marchant autour des cellules que vous choisissez au lieu de les surligner et de changer le Excel.Application.Selection. Je ne connais pas un moyen de le faire en manipulant le modèle d'objet Excel via VBA, Delphi ou autre.

Tous les conseils, astuces, hacks, ou, si j'ai vraiment de la chance, des pointeurs vers des remplacements de RefEdit drop-in seraient les bienvenus.

Répondre

1

Je suis tombé sur this RefEdit control replacement lorsque je cherchais des solutions de rechange aux bogues de RefEdit. Un contrôle par un tiers n'était pas une option pour moi à ce moment-là, mais cela pourrait vous aider.

+0

Je l'ai essayé: ça a fonctionné, mais c'était une implémentation plutôt basique qui reposait sur des changements dans la sélection Excel. J'espère vraiment quelque chose qui a fonctionné plus comme le vrai RefEdit. Je vais donc laisser cette question ouverte, à savoir que quelqu'un sait quelque chose d'autre. –

0

Pas sûr de votre question: Avez-vous essayé d'importer RefEdit dans Delphi?

Vous pouvez l'importer en tant que contrôle ActiveX à partir de RefEdit.dll, puis supprimer un contrôle TRefEdit dans n'importe quel formulaire Delphi. et vous avez le même RefEdit que dans vos applications VBA.

Ou est-ce que vous avez essayé et cela ne fonctionne pas parce que RefEdit a besoin de VBA Woodoo ...?

+0

Je ne l'ai pas essayé en Delphi ... Je l'ai essayé en VB6 et cela n'a pas fonctionné, et le lien MS que j'ai mentionné dit que "Le contrôle RefEdit est conçu pour fonctionner seulement lorsqu'il est placé sur un formulaire dans un Excel Projet VBA ... une interaction spéciale entre Excel, UserForms et le contrôle lui-même est nécessaire. " –

+0

Mais je vais essayer - pour être certain que si cela fonctionnait, ce serait une bonne solution et cela expliquerait le manque d'alternatives RefEdit! –

+0

Eh bien, je l'ai essayé. Vous pouvez certainement ajouter un contrôle TRefEdit à un formulaire, mais je n'ai pas réussi à trouver un moyen de le lier à un ExcelApplication. Je pense que vous devez faire quelque chose comme ça pour obtenir le contrôle sur le formulaire pour faire quelque chose d'utile. –

Questions connexes