我可以使用 TextBox (Vba Excel) 设置变量的名称吗?
我必须以在文本框中写入组名称并单击命令按钮的方式输入新的产品组。
代码必须从文本框中获取字符串,并将该字符串设置为新创建的数组的名称。
我只想在运行时创建一个新变量(或数组)。
据信这不可能。但它是。这没有在任何地方记录(至少我没有在任何地方读过)。
Logic:
我们只需在运行时对 VBA 编辑器进行编程即可创建新数组。您可以在 Chip 的网站上阅读有关 VBA 编辑器编程的更多信息VBA 编辑器编程 http://www.cpearson.com/excel/vbe.aspx
Note
- 确保您已设置对的引用
Microsoft Visual Basic For Applications Extensibility 5.3
- 我没有做任何错误处理。请随意将其合并到您的代码中。
在下面的代码中我们将创建一个数组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(使用前将#替换为@)