Я пытаюсь создать пользовательскую форму с несколькими выпадающими списками, которые берут значения из других книг Excel.
На данный момент мой код создает метку подписи, зависит от значения массива, который я назвал "этикетка". Для каждого ярлыка мне нужно, чтобы он открывал определенный файл и брал оттуда значения в выпадающем списке. Например, если я нахожусь в 1-м цикле, мой массив будет иметь значение «Dirección», тогда мне потребуется следующая строка кода, откройте книгу Excel с именем Departamentos.xlsx и возьмите значения оттуда, если я нахожусь во 2-м цикле,Мне нужно будет открыть другую книгу Excel под названием Empresas.xlsx и т. Д.
Это код, который я подумал, но я не понимаю, что с этим не так, потому что vba возвращает мне ошибку времени выполнения '91'
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», которая будет меняться в зависимости от цикла.
Может кто-нибудь сказать, почему это не работает и что я могу вместо этого сделать?