VBA:获取变量的名称

标签 vba excel variables

是否有函数或属性来获取变量名称?

就像是
msgBox myVariable.name或者
msgBox nameOfVariable(myVariable)
返回 "myVariable"当我用例如定义它时myVariable = "whatever" ?
谷歌只是对变量引用提出了问题......

最佳答案

可能的 Class 方法如下(已评论):

  • 添加类模块

    在 VBA IDE 中
  • 点击插入->类模块
  • 点击查看-> 属性窗口
  • 输入 (Name)属性文本框并输入“变量”(或您可能喜欢但在以下步骤中保持一致的任何内容)
  • Class 中输入以下代码代码 Pane
    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在你的代码中类

    作为利用 Variable 的示例三个变量的类,例如 String第一个值,Integer第二个和一个 Double 的值第三个值,在任何模块代码 Pane 中输入以下代码:
        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
    
  • 关于VBA:获取变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39116580/

    相关文章:

    regex - 如何在每个单词的开头添加一个字符?

    VBA - 阻止 Excel 2007 显示定义的名称消息框?

    Python和从excel文件中导入 float

    javascript - 如何在谷歌图表中使用Javascript变量

    variables - 如何将变量的值用作变量本身?

    excel - 在 Excel 2010 中测试应用程序级对话框

    Excel VBA。将单元格列表转换为范围

    VBA - 冒号 `:` 如何在带有条件的 VBA 代码中工作

    vba - 查找并计算工作表中出现的次数

    python - 全局变量在函数外不起作用