2012-05-09 10 views
0

私は、ユーザーフォームを作成し、いくつかのボタン(実行時に番号が設定されます)をExcelで作成しました。クリックされると、各ボタンは独自のユーザーフォームを開きます(同じユーザーフォームですが、各ボタンには独自のユーザーフォームがあります)。たとえば、button1はuserform1を開き、button2はuserform2を開きます。ユーザーフォームクラスの初期化

私は何とかuserformクラスを作成することを考えていて、各ボタンはuserformオブジェクトをインスタンス化します。

これを達成するために正しいコード/構文が何であるか分かりません。

+0

私は素朴かもしれませんが、個々のユーザーフォームを個別のインスタンスとして参照する必要があると思います。クラスモジュールに基づいて、ボタンをクリックするたびにユーザーフォームを作成していますか? –

+0

申し訳ありませんが私は間違った用語を使用しています...私はVBAを学んでいます。私は視覚的な基本エディタで作成されたuserformを持っています。ユーザーがExcelのボタンをクリックすると、ユーザーフォームオブジェクトが作成され、ユーザーはこのユーザーフォームと対話できます。別のボタンをクリックすると、同じuserform "class"の別のuserformオブジェクトが作成されます。基本的に同じレイアウト、外観などですが、ユーザーフォームに記入されたデータはその「ボタン」に属します。これはまだ漠然としているかどうかはわかりません。 – Ehudz

答えて

0

あなたの最後のコメントに基づいて、これが役立つと思います。

ユーザーフォームを1つ作成するだけです。その後、ユーザーフォームを開き、パラメータ化された変数で特定のデータを埋め込む関数を作成します。次に、各ボタンを呼び出すたびに変数を関数に渡します。このようなもの:

Private Sub Button1_Click() 

load_user_form "Handy", "Code" 

End Sub 

Private Sub Button2_Click() 

load_user_form "different", "data" 

End Sub 

Function load_user_form(strField1 as String, strField2 as String) 

userForm.Show 
userForm.TextBox1.Value = strField1 
userForm.textBox2.value = strfield2 
End Function 

このコードは表示されない場合がありますが、そこに表示されます。

+0

ありがとう!私はこれをソリューションの出発点として使うことができると思う – Ehudz