我可以评价一个Excel VB常量,并且在字符串格式?(Can I Evaluate An Exce

2019-07-18 14:37发布

是否有可能评估其中包含一个有效的Excel VB常量的名称,以返回常值的字符串?

例如

    Dim ConstantName as String
    Dim ConstantValue as Long

    ConstantName="xlValues"

    ConstantValue= UnknownFunction(ConstantName)

    'would set ConstantValue=-4163

Answer 1:

有趣!

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

有许多的方面,这可能会失败。 让我知道,如果你有任何问题,它:)



Answer 2:

而不是使用常量,你可以使用字典

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")


Answer 3:

是利用必要的字符串值?

Dim anyConstant as Long
anyConstant = xlValues

msgbox anyConstant

设置anyConstant任何XL不断请你,他们都列举长值。

提供的第一个解决方案确实更有趣不过。



文章来源: Can I Evaluate An Excel VB Constant That Is In String Format?