如何为每个循环更改变量

时间:2019-10-28 14:38:34

标签: excel vba combobox

我正在尝试创建一个带有多个组合框的用户窗体,这些组合框将从另一个excel工作簿中获取值。

目前,我的代码创建标题标签取决于我称为“标签”的数组的值。对于每个标签,我需要它打开一个特定文件,并从那里获取组合框值。例如。如果我在第一个循环中,我的数组值将是“Dirección”,那么我需要下一行代码打开一个名为Departamentos.xlsx的excel工作簿并从那里获取值,如果我在第二个循环中,我将需要打开另一个名为Empresas.xlsx的excel工作簿,依此类推。

这是我想的代码,但我没有什么错,因为vba向我返回了运行时错误“ 91”

enter image description here

Private Sub UserForm_Initialize()
   'Declarando variables
    Dim var As Long               'variable que para el bucle for
    Dim i As Long                 'variable para el bucle for
    Dim label As Variant
    Dim files As Variant

    'Creamos una array que contenga los nombres posibles de label
    label = Array("Dirección", "Empresa", "Area/Planta del suceso")
    files = Array("C:\Users\se72497\Desktop\Departamentos.xlsx", "C:\Users\se72497\Desktop\Empresas.xlsx", "C:\Users\se72497\Desktop\Areas.xlsx")

    For var = 0 To 2
        'Asigna el nombre a las etiquetas
        Controls("label" & var).Caption = label(var)
        set file= Workbooks.Open(files(var))
        'Bucle que recorre cada una de las líneas que existen en la tabla de DEPARTAMENTOS y se añaden a la lista desplegable que se especifica
        For i = 2 To files.Sheets("Hoja1").Range("C2").End(xlDown).Row
            Me.Controls("ComboBox" & var).AddItem files.Sheets("Hoja1").Cells(i, 3).Value
        Next i
    Next

    'Se cierran los archivos previamente abiertos
    files.Close
End Sub

如您所见,我尝试使用与标签相同的方法来执行此操作,并创建了一个包含文件路径的数组。 然后在循环中,我为“ file”变量分配一个值,该值将根据循环而变化。

有人可以告诉我为什么它不起作用,我该怎么办吗?

0 个答案:

没有答案