使用未分配的variables创build一个Excel VBA数组作为条目

我正在尝试设置导入CSV文件的工作stream程/ UX,并使用每列顶部的下拉列表为每个导入文件的列分配一个“数据types”。 一旦这些数据types被指定/分配给每一列,另一个macros将使用导入的CSV数据填充第二张表格,其中新表格中的位置取决于为导入的数据的每列指定的数据types。

例如,如果导入数据的第一列是数据types“DataA”,那么下拉select将被select为第一列(从下拉菜单中的总共12个“数据types”)。 这个“DataA”数据将被填充在第五列的第二张表格中。

这是我到目前为止的代码:

Dim DataA As Integer, DataB As Integer, DataC As Integer, DataD As Integer, DataE As Integer, DataF As Integer, DataG As Integer, DataH As Integer, DataI As Integer, DataJ As Integer, DataK As Integer, DataL As Integer Dim ColArray(12) As Variant For p = 1 To LastColImport 'This is a previously-defined/assigned variable q = 1 Do While q <= 12 If ActiveSheet.DropDowns(p).Value = q Then ColArray(q) = p Exit Do Else q = q + 1 End If Loop Next p 

如果数据types被选中,则用一个整数项填充ColArray数组;如果没有被select,则填充一个空的项。 我要做的下一步是将每个ColArray入口值分配给一个命名variables,以便我可以通过数据types名称调用ColArray入口值,而不必记住或查找每个ColArray整数值引用的数据types。

我找不到内置的“下拉列表范围名称”召回function,所以我想要做的是以下几点:

 Dim ColArrayNames(12) As Variant ColArrayNames(1) = DataA 'These variables were defined in the previous code block ColArrayNames(2) = DataB ... ColArrayNames(12) = DataL ColArrayNames = ColArray 

我意识到,在这种特定情况下,将数据typesvariables直接分配给ColArray值可能会更容易,而不是将它们放入数组中,然后等同于数组值。 我觉得像使用未赋值的variables填充数组在其他情况下也是有用的。 我尝试使用这种分配variables的方法失败了。

将最后一行代码更改为:

 For i = 1 to 12 ColArrayNames(i) = ColArray(i) Next i 

ColArray值不会被分配给数据typesvariables。 也就是说, ColArrayNames条目被分配了正确的值,所以问题似乎是通过未分配variables的ColArrayNames数组将ColArray值分配给数据typesvariables的“最后一步”。

如果有人对如何处理这个使用未赋值variables数组的问题有一些build议,以便为每个数组条目赋值(同时保留使用条目“原始”variables名称调用这些值的能力),或者如果有更有效的方法来完成这个电子表格function,请让我知道!

编辑1:根据John Coleman的要求,我会详细介绍一下我在这里要做的事情。

一旦我有导入的列号分配给一个数据types,我想发送数据到第二张表与一些代码的方式,如:

 For i = 2 to LastRow 'The LastRow variable value will be found using a simple xlDown search process Worksheets(2).Cells(1,i).Value = Worksheets(1).Cells(DataA,i).Value Worksheets(2).Cells(4,i).Value = Worksheets(1).Cells(DataB,i).Value Etc. Next i 

再次,我意识到我可以一样容易地使用

 Worksheets(2).Cells(1,i).Value = Worksheets(1).Cells(ColArrayNames(1),i).Value 

等等,但是我觉得如果我问的是可能的话,我可能会在另一种情况下使用它(即使它不是这个例子中最理想的方法)。

就我所了解的问题而言,似乎可以归结为在原始源数据和格式化输出(本例中为第二个工作表上的单元格)之间有效(有效)地定义数据映射。

当遇到问题的数据types部分时,我意识到目标数据types的最终“持有者”是持有它的对象 – 在这种情况下,它是工作表单元格,而不是VBAvariables或数组。 您的重点似乎是VBA代码,将数据从一个工作表传输/复制到另一个(或到/从变体arrays)。 您在效率上的select应该是您的指导。 如果你想为多种数据types使用相对通用的代码,我的build议是使用Variant值或数组,并在复制到目标单元格后,设置目标单元格的格式(有效地“键入”必要)。

如果可以灵活地扫描映射表以适应任意数量的数据types,格式或列,则字典可能甚至不是必需的。