有効な Excel VB 定数の名前を含む文字列を評価して、その定数の値を返すことは可能ですか?
例えば
Dim ConstantName as String
Dim ConstantValue as Long
ConstantName="xlValues"
ConstantValue= UnknownFunction(ConstantName)
'would set ConstantValue=-4163
楽しい!
Option Explicit
Function getConstantValue(constStr As String) As Variant
Dim oMod As VBIDE.CodeModule
Dim i As Long, _
num As Long
Set oMod = ThisWorkbook.VBProject.VBComponents("Module1").CodeModule
For i = 1 To oMod.CountOfLines
If oMod.Lines(i, 1) = "Function tempGetConstValue() As Variant" Then
num = i + 1
Exit For
End If
Next i
oMod.InsertLines num, "tempGetConstValue = " & constStr
getConstantValue = Application.Run("tempGetConstValue")
oMod.DeleteLines num
End Function
Function tempGetConstValue() As Variant
End Function
すべてのコードは、Module1 というモジュール内にある必要があります。これは、ルーチン内のテキスト "Module1" を変更するだけで簡単に変更できます。
への参照を追加する必要がありますMicrosoft Visual Basic for Applications Extensibility x.x
これが失敗する可能性のある方法はいくつかあります。問題がある場合はお知らせください:)
定数を使用する代わりに、辞書を使用できます
Dim dict As Object
Sub InitialiseDict()
Set dict = CreateObject(Scripting.Dictionary)
dict("xlValues") = -4163
dict("const1") = value1
...
dict("constN") = valueN
End Sub
ConstValue = dict("xlValues")