2011-01-16 10 views
0

私はVBAを全く新しくしています。ユーザー定義型への型変換文字列(セル値)?

2つのメンバー変数を持つQualValというユーザー定義型を作成しました。 次に、Qualvalとしていくつかの変数を作成し、その値を初期化しました。

今私は文字列であり、変数名と一致してそれを型キャストするセルの値を読みたいと思います。

Type QualVal 
    ul As Integer 'upper limit 
    ll As Integer 'lower limit 
End Type 

タイプQualValと私の変数:私はそれは私が何をしたいのか明確に願っています

Dim group As QualVal 
group = Cell(1, 2).Value 'would like to cast it to either g1 or n according to the cell value which also can only contain g1 or n 

g1.ll = 94 
g1.ul = 96 
n.ll = 90 
n.ul = 93 

今、私はこのような何かをしたいです。 私はselect caseステートメントを使うことができましたが、言及されているよりも多くの変数があり、この解決策はうまくいきません。

多分誰かが私を助けることができます。

ありがとうございます。

答えて

0

私はあなたがそれを行うことはできないと思いますが、わかりません。

私が見ることができる最良の解決策は、すべての可能な変数名とそのオブジェクトをコレクションに格納することです。このような何か:

Dim vars As New Collection 

vars.Add "g1", g1 
vars.Add "n", n 

Dim group As QualVal 
group = vars.Item(Cell(1, 2).Value) 

あなたが露出しているものの変数の制御を持っているので、これはまた、はるかに安全です。

+0

ありがとうございました! しかし、コレクションにQualVal変数を追加しようとすると、次のエラーが発生します。 パブリックオブジェクトモジュールで定義されたユーザー定義型のみが、バリアントとの間で強制的にバインドされるか、バインドされた関数に渡されます。 – TheLostOne

+0

@TheLostOne:Hmm私はこれを読んで、コレクションにユーザー定義の型を格納することができないことを知ったので、クラスを作成する必要があります。 –

+0

ご協力いただきありがとうございました! 私はちょうど最後に単純なSelect Caseステートメントを使用しました。 別のクラスを使用する際に問題があり、神経と時間を邪魔しませんでした。 VBAとの最初の連絡でした。 – TheLostOne

関連する問題