ユーザーが開いているワークシートのリストからワークシートを選択できるようにするユーザーフォームを作成しました。さまざまな目的のために、私のマクロのさまざまな場所にこのUserformが必要です。たとえば、「売上」データを含むワークシートを指定し、「在庫」データを含むワークシートを指定することができます。オブジェクトwsSales
とwsStock
は、適切なワークシートを指していなければなりません。単一のユーザーフォームの複数のインスタンス/ポインタの必要性
どのように私のユーザーフォームの各インスタンスに異なる動作を与えることができますか? 1つのインスタンスでは、ユーザーが選択したワークシートにwsSales
を設定し、もう1つのインスタンスでは、ユーザーが選択したワークシートにwsStock
を設定する必要があります。
私はUseformにいくつかの "OK"ボタンを配置し、インスタンスごとに1つだけ表示することを考えました。各OKボタンには異なるコードがあります。しかし、これは非常にエレガントではありません。なぜなら、私のUserformには可能な限り多くの「OK」ボタンを配置する必要があり、より複雑な状況ではかなり混乱するからです。だから、私はwsSales
またはwsStock
へのポインタとして私のUserformのプロパティを使用するのが理想的ですが、私はそのポインタがVBAに存在しないことを読んだことがあります。それでは、UserFormの2つのインスタンスを異なる方法で動作させる最良の方法は何ですか?
UserFormはどのように呼び出されますか?すなわち、特定のシートから、または他のコードの一部として – brettdj
1つのオプションは、シート名を 'UserForm.Tag'プロパティに格納することです。 – brettdj
このユーザーフォーム(「ufPickSheet」と呼ぶ)は別のユーザーフォームから呼び出されます(「ufMain」と呼ぶ)。 ufMainには2つの「シート選択」ボタンがあり、それぞれがufPicksheet UserFormの別のインスタンスを呼び出し、そのプロパティを設定します。 – Cutter