変数名を取得する関数またはプロパティはありますか?私は、例えばでそれを定義したとき"myVariable"
を返しVBA:変数名を取得
msgBox myVariable.name
または
msgBox nameOfVariable(myVariable)
よう
何かmyVariable = "whatever"
? Googleは変数参照に質問を投げかけています...
変数名を取得する関数またはプロパティはありますか?私は、例えばでそれを定義したとき"myVariable"
を返しVBA:変数名を取得
msgBox myVariable.name
または
msgBox nameOfVariable(myVariable)
よう
何かmyVariable = "whatever"
? Googleは変数参照に質問を投げかけています...
(コメント)は、次のことになる可能性クラス・アプローチ:
は、クラスモジュールの
を追加VBA IDEで
インサート>クラスモジュールをクリックし
[View]をクリック - >プロパティウィンドウ
が(Name)
プロパティのテキストボックスを入力し、「変数」と入力(または次の手順に好むが、と一貫性が何であれ)
はClass
コードウィンドウに次のコードを入力します。
Option Explicit
'declare the fields that will be attached to every instance of this class
Public name As String '<--| this will store the name of the variable to which you'll set the object of this class
Public value As Variant '<--| this will store the value associated with the variable to which you'll set the object of this class
'declare a `method` to write the `value` of the object in the named range named after the `name` field
Sub WriteRange(Optional wb As Variant) '<--| you can pass the reference of the workbook whose named ranges you want to exploit
If IsMissing(wb) Then Set wb = ActiveWorkbook '<--| if no workbook reference is passed then the currently active workbook is assumed
If TypeName(wb) = "Workbook" Then '<-- check for a proper workbook reference being passed)
On Error Resume Next '<-- to prevent unassigned named range throw an error
wb.Names(name).RefersToRange.value = value '<--| write the value of the `value` filed of the current instance in the named range of the passed workbook named after the `name` filed of the current instance
End If
End Sub
Variable
クラスを悪用
第一のためString
値、2番目と3番目のためDouble
値についてInteger
値、たとえば、と三つの変数のためのVariable
クラスを利用する例として、任意のモジュールのコードウィンドウに次のコードを入力してくださいは:
Option Explicit
Sub main()
Dim myVariable1 As Variable, myVariable2 As Variable, myVariable3 As Variable '<--| declare your variables of type "Variable": choose whatever name you may want
Set myVariable1 = CreateVariable("myVariable1", "this is a string value") '<-- set your 1st variable with its name (you must use the same name as the variable!) and value (myVariable1 will have a `String`type value)
Set myVariable2 = CreateVariable("myVariable2", 10) '<-- set your 2nd variable with its name (you must use the same name as the variable!) and value (myVariable2 will have a `Integer`type value)
Set myVariable3 = CreateVariable("myVariable3", 0.3)'<-- set your 3rd variable with its name (you must use the same name as the variable!) and value (myVariable3 will have a `Double` type value)
'exploit `WriteRange` method of your Class to write the object value into the corresponding named range: you must have set proper named ranges in your currently active workbook
myVariable1.WriteRange '<--| this will write the string "this is a string value" in named range "myVariable1" of your currently active workbook
myVariable2.WriteRange '<--| this will write the number '10' in named range "myVariable2" of your currently active workbook
myVariable3.WriteRange '<--| this will write the number '0.3' in named range "myVariable3" of your currently active workbook
End Sub
' helper Function to create an object of `Variable` class and initialize its `name` and `value` properties
Function CreateVariable(name As String, value As Variant) As Variable '<--| the function returns an object of `Variable` class
Set CreateVariable = New Variable '<--| this creates a new object of `Variable` class
With CreateVariable '<--| refer to the newly created object and ...
.name = name '<--| ... set its `name` property ...
.value = value '<--| ... and its `value` property
End With
End Function
@ alve89:あなたはそれを通過しましたか? – user3598756
なぜあなたはそれをしたいですか? XY問題? –
(変数とセルの)名前で指定されたセルにいくつかの変数を書きたいとします。 – alve89
ありません。 'Dictionary'オブジェクトか' Class'のいずれかを使わなければなりません – user3598756