excel - 打印变量的名称

标签 excel vba

我可能不擅长谷歌搜索,因为我找不到以下问题的答案:

Sub TEST()
Dim sthstring as string
sthstring = "Hello World"
end sub

虽然我们都知道使用 msgbox 打印“Hello world”很容易,但是否可以打印出变量的名称(在本例中为“sthstring”) >) 以及如何?

编辑:请不要提供以下答案:

Dim someotherstring as string  
someotherstring = "sthstring"

因为我想找到一种方法来打印变量的“名称”,谢谢

最佳答案

阅读完评论后,我想您可能会发现这个答案很有用。

VBA 不支持反射,就像 @Monty Wild 已经提到的那样,但添加对 Microsoft Visual Basic for Applications Extensibility 5.3 的引用将授予您访问 VBE 对象的权限。然后,您可以迭代 VBA 项目中的对象模块,并以 String 格式检索模块的完整代码。

考虑以下事项(将其粘贴到新工作簿的 Module1 中)

Sub Main()

    Dim code As String
    code = GetCodeModule("Module1")

    Debug.Print code

End Sub

Private Function GetCodeModule(ByVal codeModuleName As String) As String
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule

    Set VBProj = ThisWorkbook.VBProject
    Set VBComp = VBProj.VBComponents(codeModuleName)
    Set CodeMod = VBComp.CodeModule

    GetCodeModule = CodeMod.Lines(1, CodeMod.CountOfLines)
End Function

您的 code 变量现在存储 Module1 中的确切代码,您可以通过打开立即窗口 ctrl+

您可能想要编写/使用某种Find函数来反汇编字符串组件以检索变量名称和值,但我不建议这样做,因为它可能会变得非常棘手。

关于excel - 打印变量的名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24173082/

相关文章:

mysql - Excel删除小数

vba - Excel VBA : how to cast a generic control object into a ComboBox object?

excel - 我需要复制多张纸中的特定范围并将它们粘贴到最后一张纸上

python - 使用 PyExcelerate 追加到现有 Excel 工作表中

string - VBA 的字符串比较算法是什么?

excel - 使用 Dir 查找不带 "AAA"的文件

Excel - 将多列混合为一列

即使在模块中,Excel VBA 宏也不可用,

使用 VBA 创建的 Excel 复选框不成比例

excel - 运行时错误 '1004' - 对象 'Open' 的方法 'Workbooks' 失败