Arrays VBA从数组成员定义变量名
早上好 我正在使用VBA,简单地说,我的问题是,我希望有一些代码,可以用数组中每个成员的名称设置一个新变量 背景: 通过读取XML文件创建的初始数组,将所有子NOE中的信息作为数组每个成员的值。比如说。如果我有一些XML,例如:Arrays VBA从数组成员定义变量名,arrays,vba,Arrays,Vba,早上好 我正在使用VBA,简单地说,我的问题是,我希望有一些代码,可以用数组中每个成员的名称设置一个新变量 背景: 通过读取XML文件创建的初始数组,将所有子NOE中的信息作为数组每个成员的值。比如说。如果我有一些XML,例如: <dimensions> <dimension> dim1 </dimension> <dimension> dim2 </dimension> <d
<dimensions>
<dimension>
dim1
</dimension>
<dimension>
dim2
</dimension>
<dimension>
dim3
</dimension>
</dimensions>
我的问题:
然后,我希望能够循环遍历我的_array()的所有成员,并生成以每个成员命名的新变量。因此,在这个简单的例子中,结果是定义了3个新变量dim1、dim2、dim3
我迄今为止的努力:
dim i as integer
for i=0 to Ubound(my_array)
dim my_array(i) as string
next i
我希望每次循环运行时都能定义一个新变量。由于我的_数组成员的数量取决于正在读取的文件,我不知道需要定义多少变量,或者我可以预先定义它们以供以后使用
我想要的是可能的吗?我的想法是否正确
下一步是,不是定义简单的变量,每个循环将创建一个新的字典供以后使用,但这是以后的升级
非常感谢如果您不想编写VBA编辑器的脚本(与使用字典相比,这是一项大量的工作),但仍然希望自动生成大量Dim语句供以后使用,则可以编写一个子脚本,将Dim语句生成为字符串,然后将其打印到即时窗口:
Sub test()
Dim i As Long
Dim my_array As Variant
Dim dims As String
my_array = Array("dim1", "dim2", "dim3")
For i = 0 To UBound(my_array)
dims = dims & "Dim " & my_array(i) & " As String" & vbCrLf
Next i
Debug.Print dims
End Sub
输出如下所示:
您仍然需要手动复制/粘贴到编辑器中,但这可能会节省一些输入。显然,这不是一个非常健壮的解决方案,但我时不时地发现,通过编写一个助手子类来生成重复代码非常有用,该子类将代码创建为字符串并将其打印到即时窗口。如果您能够以这种方式定义变量,您以后将如何使用它们进行编码,假设您事先不知道它们的名称?我将对创建的每个变量运行相同的分析,以便知道维度列表包含在我的数组()中。我可以循环使用我的维度列表,将我的_array()的每个成员传递给不同的函数以返回结果。字典本质上是一组名称,可以在运行时定义并用作变量。您似乎知道这一点,但将其称为“以后的升级”。为什么要等待?没错,实际上XML文档比上面的示例复杂得多,每个维度都有自己的子维度。计划是创建my_array()作为所有维度的列表。然后为每个维度创建字典,该字典将包含该维度的子节点作为键,并针对每个键创建每个子节点的属性字符串。为my_数组中的每个维度生成一个字典,其中存储了有关其子节点的信息。这很可爱,但仍然会引发一些问题。我可以通过删除数组并相应地命名变量来定义一些东西吗?你可以编写VBA代码,生成另一个VBA代码,看一看,例如。因此,您可以添加新的标准模块,并为其中的所有变量编写所有声明。谢谢John,这是一个方便的小技巧。看起来我必须想出不同的解决方案来存储所有信息。
Sub test()
Dim i As Long
Dim my_array As Variant
Dim dims As String
my_array = Array("dim1", "dim2", "dim3")
For i = 0 To UBound(my_array)
dims = dims & "Dim " & my_array(i) & " As String" & vbCrLf
Next i
Debug.Print dims
End Sub