VB6.0用掲示板の過去のログ(No.1)−VBレスキュー(花ちゃん)
[記事リスト] [新規投稿] [新着記事] [ワード検索] [過去ログ] [管理用]

投稿日: 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 を使ってできること]
     └[オブジェクト]
      └[コレクションの作成方法]
       └[独自のコレクション クラスの作成]


- 関連一覧ツリー (★ をクリックするとツリー全体を一括表示します)

- 返信フォーム (この記事に返信する場合は下記フォームから投稿して下さい)

- Web Forum -