投稿日 | : 2002/12/03(Tue) 09:04 |
投稿者 | : 魔界の仮面弁士 |
Eメール | : |
URL | : |
タイトル | : Re: 文字列を変数名として扱う事は出来ますか? |
> VBで質問なのですが、プライベートな構造体で
構造体ではなく、「ユーザー定義型」ですね。
> public function GetST("ST_NUM") の様に引数へ変数名を入れて、
> 何らかの形で各構造体のメンバ変数にアクセス(値の取得など)
> したいのですが、このような事は可能でしょう?
そういう用途であれば、通常、ユーザー定義型は用いません。
クラスにするか、コレクション系のオブジェクトを使うのが常套かと。
とりあえず、Dictionaryオブジェクトを使ったサンプルを掲載しておきます。
Option Explicit
Private GetST As Object
Private Sub Form_Load()
Set GetST = CreateObject("Scripting.Dictionary")
GetST("ST_NUM") = "ABC"
GetST("ST_NAME") = "DEF"
GetST("ST_TEL") = "GHI"
End Sub
Private Sub Command1_Click()
MsgBox GetST("ST_NAME")
End Sub
Dictionaryオブジェクトの代わりに、PropertyBagオブジェクトやCollectionオブジェクトなどでも
同様の仕組みは作れますが、今回はDictionaryの方が使いやすいでしょう。
なお、上記のコードだと、想定外のメンバ名が利用できてしまいますし、
データ型も厳密に決定させる事ができません。そうした場合には、
クラスモジュールを使って、独自のコレクションを作ってしまえばOKです。
なお、独自のコレクションを作成する手順に付いては、MSDNライブラリを参照してください。
[Visual Studio 6.0 ドキュメント]
└[Visual Basic ドキュメント]
└[Visual Basic の使用方法]
└[プログラミング ガイド]
└[Visual Basic を使ってできること]
└[オブジェクト]
└[コレクションの作成方法]
└[独自のコレクション クラスの作成]