是否有可能评估其中包含一个有效的Excel VB常量的名称,以返回常值的字符串?
例如
Dim ConstantName as String
Dim ConstantValue as Long
ConstantName="xlValues"
ConstantValue= UnknownFunction(ConstantName)
'would set ConstantValue=-4163
是否有可能评估其中包含一个有效的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
所有代码都必须是称为Module模块中。 这可以通过常规更改文本“模块1”相当简单地改变。
你需要添加一个参考Microsoft Visual Basic for Applications Extensibility xx
有许多的方面,这可能会失败。 让我知道,如果你有任何问题,它:)
而不是使用常量,你可以使用字典
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")
是利用必要的字符串值?
Dim anyConstant as Long
anyConstant = xlValues
msgbox anyConstant
设置anyConstant任何XL不断请你,他们都列举长值。
提供的第一个解决方案确实更有趣不过。