VBで変数名同士を連結して変数名を表現することはできるでしょうか?
イメージ的には文字列変数を二つ用いて
Dim HenSuu As Integer
strA = "Hen"
strB = "Suu"
strA & strB = 5
というような感じなんですけど(連結でHenSuu = 5としたいのです・・・)
strA & strBしたものを変数として扱ってくれる関数でもないかな?と探しては見たものの
なかなか途方にくれました
できる方法があるならばよろしくお願いします
求める答えになっているかは自信がありませんが、
「コレクション系のオブジェクト」を使えば良いのではないかと。
例えば、Dictionaryオブジェクトを用いるなら、
Dim Col As Object
Set Col = CreateObject("Scripting.Dictionary")
のようにしておいて、
strA = "Hen"
strB = "Suu"
Col(strA & strB) = "12345"
MsgBox Col("HenSuu")
という感じで。。。
あとは、VB6のCallByNameを使うという手もあります。
Option Explicit
Public HenSuu As String
Private Sub Command1_Click()
Dim strA As String
Dim strB As String
strA = "Hen"
strB = "Suu"
CallByName Me, strA & strB, VbLet, "12345"
End Sub
Private Sub Command2_Click()
MsgBox HenSuu
End Sub
これで駄目なら、あとはScriptControlオブジェクトを使うか、ですかね。
早急なるご回答ありがとうございました
後者の策を使用させていただき
Publicで宣言していなかったのでエラーになり考え込んでしまいました
そりゃそうですよね・・・関数でどっかに飛んでるわけだし・・・
もっと精進いたします・・・
> 後者の策を使用させていただき
> Publicで宣言していなかったのでエラーになり考え込んでしまいました
変数をPrivateにしているのであれば、それを
Friend(もしくはPublic)のメソッド(またはプロパティ)として
宣言してやればOKです。
Option Explicit
Private mHenSuu As String
Public Property Get Hensuu() As String
Hensuu = mHenSuu
End Property
Public Property Let Hensuu(ByVal vNewValue As String)
mHenSuu = vNewValue
End Property
Private Sub Command1_Click()
Dim strA As String
Dim strB As String
strA = "Hen"
strB = "Suu"
CallByName Me, strA & strB, VbLet, "12345"
End Sub
Private Sub Command2_Click()
MsgBox Hensuu
End Sub
> そりゃそうですよね・・・関数でどっかに飛んでるわけだし・・・
CallByNameは、オブジェクトのメソッド(またはプロパティ)を呼び出す関数です。
この場合は、「Formオブジェクト」に自作した「HenSuuプロパティ」を
操作する事になるわけですね。
なるほど・・・
後説明まで申し訳ありませんです・・・
ツイート | ![]() |