Excelスコープのさまざまな種類の変数スコープに関するページを最後の1時間読んでいますが、スコープの問題に対処する明確なドキュメント参照が見つかりませんでした。それはそのような古典であると確信しています。ああ、ここに行く。userform/sheetオブジェクトで公開変数を使用できるようにする
私は1枚のシートと1つのユーザーフォームを含むブックを持っています。私はシートの第1列に座っている学生のリストを持っています。私はしたいと思います:students_list
という名前のいくつかのグローバルコレクション変数に
- 負荷このリストをアップ(私はこのはThisWorkbookオブジェクト内のワークブック・オープン()プロシージャを使用してください)
- に
students_list
の内容を使用します - 私のユーザーフォームにリストボックスを初期化し、私のユーザーフォーム上のボタンは、私は必要なすべてがから見ている変数である
上でクリックされたときにstudents_list
から要素を削除します私のユーザーフォームの手順の中で、そしてThisWorkbookオブジェクトの中から。
私はシートのコード内で、シートフォームのコードで、グローバルフォーム専用のモジュールでThisWorkbookのuserformで宣言しようとしました...私はちょうど正しい方法を見つけることができませんstudents_list
変数はどこからでも見ることができます。
私には何が欠けていますか? -/
をあなたが保存するために、スプレッドシートの 'Range'を使用することができますVBAコードのあらゆる要素(基本的にはシートやモジュール)からアクセスできます。このスクラッチ領域が表示されないようにするには、列BBでそれを開始し、そして/またはフォント色を白に設定して、ユーザーがそれに気付かないようにします。 – PeterT
モジュールで 'students_list'を' Public'と宣言した場合、変数**はプロジェクト内のすべてのプロシージャで使用可能になっています。 http://stackoverflow.com/a/3815797/6535336を参照してください。(唯一の例外は、同じ名前の別の変数を別の場所に宣言した場合です.2番目の変数は2番目の宣言のスコープ内で参照されます) – YowE3K
スクラッチ領域を表示するpbはありません。私の 'students_list'コレクションに値をロードする方法...しかし、それは私が恐れている問題ではありません。 YowE3K @ – Guillaume