我可以用文本框设置变量名称吗? excel

2024-05-16

我可以使用 TextBox (Vba Excel) 设置变量的名称吗? 我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组。 代码必须从文本框中获取字符串,并将该字符串设置为新创建的数组的名称。


我只想在运行时创建一个新变量(或数组)。

据信这不可能。但它是。这没有在任何地方记录(至少我没有在任何地方读过)。

Logic:

我们只需在运行时对 VBA 编辑器进行编程即可创建新数组。您可以在 Chip 的网站上阅读有关 VBA 编辑器编程的更多信息VBA 编辑器编程 http://www.cpearson.com/excel/vbe.aspx

Note

  1. 确保您已设置对的引用Microsoft Visual Basic For Applications Extensibility 5.3
  2. 我没有做任何错误处理。请随意将其合并到您的代码中。

在下面的代码中我们将创建一个数组MyArray并将其尺寸表示为5

Code

Option Explicit

Const vbext_ct_StdModule As Integer = 1

Sub Sample()
    Dim VBProj As VBIDE.VBProject
    Dim VBComp As VBIDE.VBComponent
    Dim CodeMod As VBIDE.CodeModule
    Dim LineNum As Long

    Set VBProj = ThisWorkbook.VBProject
    Set VBComp = VBProj.VBComponents.Add(vbext_ct_StdModule)

    '~~> Create new module called MySpecialModule
    '~~> It it exists then you will get an error
    '~~> Either delete it and create new one or use error handling
    VBComp.Name = "MySpecialModule"

    Set CodeMod = VBComp.CodeModule

    With CodeMod
        LineNum = .CountOfLines + 1
        .InsertLines LineNum, "Public MyArray() As String"
        LineNum = LineNum + 1
        .InsertLines LineNum, "Public Sub InitArray()"
        LineNum = LineNum + 1
        .InsertLines LineNum, "    Redim MyArray (1 to 5)"
        LineNum = LineNum + 1
        .InsertLines LineNum, "End Sub"
    End With

    '~~> Initialize newly created Array
    initializeArray
End Sub

'~~> Run the procedure to initialize the newly created array
Sub initializeArray()
    InitArray

    Debug.Print UBound(MyArray)
End Sub

当您运行代码时,会创建一个新模块,并在该模块中注入一些代码。然后在运行时再次调用该代码。当您运行代码时,以下代码不存在。

Public MyArray() As String

Public Sub InitArray()
    ReDim MyArray(1 To 5)
End Sub
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

我可以用文本框设置变量名称吗? excel 的相关文章

随机推荐