人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

【Excel VBA】Type のプロパティ名を変数で指定できますか?

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


●質問者: nannde
●カテゴリ:コンピュータ
✍キーワード:AS Excel ng String sub
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● kn1967
●10ポイント
x(s) = "変数$sで指定したい"

こういうこと?

◎質問者からの返答

コンパイルエラー

配列がありません

でした。

わかりづらくてすみません。

タイプのエレメント名を直書きする

x.member = 値

のではなく、

変数で指定したい

Dim elem_string As String

x.elem_string = 値 ' これはエラー

ということなのです。


2 ● mystashes
●35ポイント
Sub test()
Dim x As x
Dim s As String
s = "member" '<-ここはタイプのエレメント名とは関係なく任意の文字列。
x.member = s '<-もちろんここで x.member="hoge"等直接代入も可
MsgBox x.member
End Sub

でいけると思います。

◎質問者からの返答

わかりづらくてすみません。

タイプのエレメント名を変数で指定したい

ということなのです。タイプの値ではなく。


3 ● Mook
●35ポイント ベストアンサー

何でそのようなことがしたいか、目的を書かれれば代案も提示できるかと思いますが、

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さま!

おっしゃるとおり、連想配列的な利用です。

逐一、要素名を書かなければいけないとは...

簡単にはできないと教えていただいたことで非常に助かりました。

ありがとうございました!

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ