2012-03-31 8 views
0

ユーザーが開いているワークシートのリストからワークシートを選択できるようにするユーザーフォームを作成しました。さまざまな目的のために、私のマクロのさまざまな場所にこのUserformが必要です。たとえば、「売上」データを含むワークシートを指定し、「在庫」データを含むワークシートを指定することができます。オブジェクトwsSaleswsStockは、適切なワークシートを指していなければなりません。単一のユーザーフォームの複数のインスタンス/ポインタの必要性

どのように私のユーザーフォームの各インスタンスに異なる動作を与えることができますか? 1つのインスタンスでは、ユーザーが選択したワークシートにwsSalesを設定し、もう1つのインスタンスでは、ユーザーが選択したワークシートにwsStockを設定する必要があります。

私はUseformにいくつかの "OK"ボタンを配置し、インスタンスごとに1つだけ表示することを考えました。各OKボタンには異なるコードがあります。しかし、これは非常にエレガントではありません。なぜなら、私のUserformには可能な限り多くの「OK」ボタンを配置する必要があり、より複雑な状況ではかなり混乱するからです。だから、私はwsSalesまたはwsStockへのポインタとして私のUserformのプロパティを使用するのが理想的ですが、私はそのポインタがVBAに存在しないことを読んだことがあります。それでは、UserFormの2つのインスタンスを異なる方法で動作させる最良の方法は何ですか?

+0

UserFormはどのように呼び出されますか?すなわち、特定のシートから、または他のコードの一部として – brettdj

+0

1つのオプションは、シート名を 'UserForm.Tag'プロパティに格納することです。 – brettdj

+0

このユーザーフォーム(「ufPickSheet」と呼ぶ)は別のユーザーフォームから呼び出されます(「ufMain」と呼ぶ)。 ufMainには2つの「シート選択」ボタンがあり、それぞれがufPicksheet UserFormの別のインスタンスを呼び出し、そのプロパティを設定します。 – Cutter

答えて

2

実際に変数をuserformのインスタンスとして宣言していますか?もしそうでなければ、あなたはすべきです。あなたはこの投稿を見てみたいかもしれません:yoursumbuddy.com/a-flexible-vba-chooser-form

+0

いいです、今私はあなたにも+1を与えることができます;)。 – Reafidy

関連する問題