Не могу сообразить как скопировать в массив только определенные столбцы с листа. Например, мне из файла "выгрузка1_тест" нужно скопировать в массив только столбцы ИНН и Организация. При этом, если в файле нет одного из столбцов, нужно выдать ошибку. Как работает: 1. открываем файл "выборка_t" заходим в редактор и запускаем форму f_index 2. в поле организация выбираем файл "выгрузка1_тест" вся обработка происходит в модуле "obrabotka"
вот код, где ищу номера столбцов в файле "выгрузка1_тест":
Код
s = 1
For j = 1 To UBound(n_org)
For i = 1 To lLastColOrg
If ar_org_t(1, i) = n_org(j) Then
n_org_i(s) = i
s = s + 1
End If
Next
Next
nn = UBound(n_org_i)
ar_org_t(1, i) - массив с название шапки из файла выгрузка1_тест n_org(j) - это массив с названием нужных столбцов
И мне как-то надо определить все ли элементы массива n_org(j) нашлись в массиве ar_org_t(1, i)
Можно использовать Find по диапазону. Нашли - записали номер столбца. Не нашли - "мне как-то надо определить все ли..." Или другой вариант - цикл по шапке и запоминаем в словаре номер столбца к каждому названию. Затем цикл по n_org() и проверка что все есть в словаре. Далее когда нужно - берём номер столбца из словаря. Написать-проверить не могу, т.к. пример не работает вот так сразу, нужно понимать что там куда и как, а это исследовать - непроизводительная трата времени...
Действительно, как вызывается форма не понятно. В коде какие-то не объявленные переменные. Думаю, здесь можно и без словаря обойтись, достаточно одной строки :-) Пример во вложении.
Словарь позволяет избавиться от цикла в цикле при "запоминании что где", и проще организовать затем обращение к столбцу например "ИНН", который изначально неизвестно где. Конечно на 2 значения как "из пушки по воробьям", но код в любом случае будет проще и понятнее. Ну а проверить что всё нашлось можно конечно как угодно. В Вашем варианте можно в финале проще, так: