私は 80 人ほどのユーザー向けの Word VBA マクロ アプリに取り組んでいます。このオフィスはスタッフの離職率が高いため、トレーニングに問題があり、このプロジェクトの自主的な要件の 1 つは、包括的で使いやすいドキュメントです。ただし、これを補足し、初心者が何か新しいことを試したいときに 100 ページのドキュメントを開く必要がないようにするために、コンテキスト ヘルプを提供するすべてのユーザー フォーム (5 つある) にステータス バーが必要です。ツールチップが煩わしい。
経験が少ないので、やりたいと思っていた
基本的に、すべてのステータス文字列を含むファイルがあります。(これは現在テキスト ファイルですが、将来、他のスタッフが編集しやすいように、スプレッドシートまたは csv を使用する必要があるかどうか疑問に思っていました。) すべてのコントロールには、関数を参照する MouseMove イベントがあります: getStatus(cID) は、ファイルで、行を取得してステータス ラベルに表示します。また、ファイル内の同じ行から、ラベルがクリック可能かどうか (ヘルプ ファイル内のページにリンクするため) や、ラベルの色など、いくつかのパラメーターも取得します。
いくつか質問があります:
ユーザーフォームが常にファイルを参照している場合、アプリケーションは遅くなりますか? 私には問題ないように感じますが、あまりにも長い間使用しており、そのファイルにアクセスしているユーザーは私だけです。常に 80 人がアクセスしています。
コントロール上の MouseMove は最善の方法ですか? 代わりに座標を使用する必要がありますか?
最も重要なことは (できるだけ少ない作業で済むという点で)、すべてのコントロールで MouseMove イベントを発生させる必要がないように、これを行う方法はありますか? 私は数百ほどのコントロールを持っており、それぞれに独自の識別子があります (まあ、まだではありませんが、これが唯一の方法であればそうなるでしょう)。おそらく、フォームがロードされるときに、可能なすべてのステータス行をロードして、コントロールがマウスオーバーされたときにいつでも準備できるようにすることができます。しかし、それでは、ロード時間は無視できますか?
アイデアや考えを高く評価してください。特に、VBA にこれを行うためのさまざまな機能がすでにあり、車輪を再発明しようとしている場合は特にそうです。ユーザーがアプリケーション自体をめったに見ないため、アプリケーションのステータス バーを使用できません。
ありがとう!
編集:
これは、データ入力、クリック操作、およびドキュメント生成の両方に使用できます。
これは制御された環境であるため、マクロのセキュリティ問題は私にとって大きな懸念事項ではありません。何か問題が発生した場合、それは他の誰かのせいまたは問題です:)