Public Type x
member As String
End Type
Sub test()
Dim x As x
Dim s As String
s = "member"
x.s = "変数$sで指定したい" ' NG!
MsgBox x.member
End Sub
何でそのようなことがしたいか、目的を書かれれば代案も提示できるかと思いますが、
VBA で変数(メンバ変数を含めて)を変数で指定することは単純にはできないと思います。
他の言語であれば連想配列が比較的目的に近いように思いますが、残念ながら VBA に
この機能はありません。VBA で類似の方法としては Dictionary の使用が思い浮かびますが、
それではダメでしょうか。
Sub test() Dim x As Object Dim s As String Set x = CreateObject("Scripting.Dictionary") s = "member" x.Add s, "変数$sで指定したい" MsgBox x.Item(s) End Sub
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.ht...
x(s) = "変数$sで指定したい"
こういうこと?
コンパイルエラー
配列がありません
でした。
わかりづらくてすみません。
タイプのエレメント名を直書きする
x.member = 値
のではなく、
変数で指定したい
Dim elem_string As String
x.elem_string = 値 ' これはエラー
ということなのです。
Sub test() Dim x As x Dim s As String s = "member" '<-ここはタイプのエレメント名とは関係なく任意の文字列。 x.member = s '<-もちろんここで x.member="hoge"等直接代入も可 MsgBox x.member End Sub
でいけると思います。
わかりづらくてすみません。
タイプのエレメント名を変数で指定したい
ということなのです。タイプの値ではなく。
何でそのようなことがしたいか、目的を書かれれば代案も提示できるかと思いますが、
VBA で変数(メンバ変数を含めて)を変数で指定することは単純にはできないと思います。
他の言語であれば連想配列が比較的目的に近いように思いますが、残念ながら VBA に
この機能はありません。VBA で類似の方法としては Dictionary の使用が思い浮かびますが、
それではダメでしょうか。
Sub test() Dim x As Object Dim s As String Set x = CreateObject("Scripting.Dictionary") s = "member" x.Add s, "変数$sで指定したい" MsgBox x.Item(s) End Sub
http://www.eurus.dti.ne.jp/~yoneyama/Excel/vba/vba_dictionary.ht...
Mookさま!
おっしゃるとおり、連想配列的な利用です。
逐一、要素名を書かなければいけないとは...
簡単にはできないと教えていただいたことで非常に助かりました。
ありがとうございました!
Mookさま!
おっしゃるとおり、連想配列的な利用です。
逐一、要素名を書かなければいけないとは...
簡単にはできないと教えていただいたことで非常に助かりました。
ありがとうございました!