Добрый день форумчани! Помогите пожалуйста разобраться с работой циклов. Бьюсь второй день(.
Суть вопроса: Есть 2 цикла, основной и вспомогательный, внутри основного. Основной пробегает по строкам исходной таблицы забирая составной ключ по которому должны копироваться данные из вспомогательной таблицы (она создается на основе основной на предыдущем "этапе").
Вспомогательный цикл призван проверить наличие ключа во всех строчках вспомогательной таблицы (порядок строк разный в 2 таблицах), и если ключ найден, то копирует основные значения табличной части в основную таблицу, если нет, оставляет поля по новому ключу пустыми (доступными для заполнения). Ключ копируется из внешнего источника ХД через одноименный лист.
Проблема: Когда устанавливаю чек поинт и делаю отладку по шагам, все отрабатывает корректно, но когда запускаю макрос (проблемная часть с 181 строки кода), копирование происходит без выполнения логических условий проверки ключа, тупо подряд строки из временной таблица в основную копируются.
В файле с примером целевой вид после выполнение макроса на листе "Ввод данных_Целевой", то, что получается сейчас при запуске на листе "Ввод данных_Ложный". Помогите разобраться, почему так отрабатывает макрос при обычном запуске, в то время, как при отладке по шагам, все работает корректно?
Необходимо скопировать циклом по строкам диапазон таблицы из "временного" листа в "постоянный" при выполнении конкретного условия. Диапазон по столбцам разрывают формулы, поэтому возможно придется делать несколько диапазонов на одну строку или может какой-то более удобный вариант, для примера взял первый диапазон с 6 по 8 столбец, в 9 идет первая формула, потом снова диапазон для копирования с 10 столбца по 15 например.
Условие, это совпадение на двух листах конкатенаций из 3 уникальных аналитик, т.е. если они совпали, то копируем указанный диапазон из одного листа в другой. Структура листов идентична по набору столбцов. Макрос при запуске ругается на функцию копирования.
Общий смысл примерно такой: Есть лист, куда прилетают много значений из ХД, эти значения идут в разрезе 3 уникальных полей (Структура_Должность_Сотрудник), далее эти данные копируются на пользовательский лист "Ввод данных", в котором заносят недостающие цифры.
Может возникнуть такая ситуация, когда обновились данные в ХД, например добавился новый сотрудник и встает вопрос как подкачать новые значения не потеряв старые (структура строк ломается), уже внесенные пользователем. Самый простой способ, который я придумал, это скопировать уже заполненные данные во временный лист, затем вставить обновленные данные из ХД и по ключу вернуть ранее заполненный цифры из временного листа обратно. На последнем этапе я пока и завис из-за того, что не знаю как грамотно скопировать диапазон между листами.(Опыт в VBA не большой)
Буду благодарен полезному совету, заранее спасибо!
Sub Копирование()
'##########################################
'#### КОПИРОВАНИЕ ИЗ ВРЕМЕННОГО ЛИСТА ####
'##########################################
SheetName_Goal = "Ввод данных"
SheetName_Goal_tmp = "Ввод данных (2)"
Dim i As Integer
Count_Copy = ActiveWorkbook.Sheets(SheetName_Goal).Cells(Rows.Count, 3).End(xlUp).Row
For i = 3 To Count_Copy
If ActiveWorkbook.Sheets(SheetName_Goal).Cells(i, 4) = ActiveWorkbook.Sheets(SheetName_Goal_tmp).Cells(i, 4) Then
ActiveWorkbook.Sheets(SheetName_Goal).Cells(i, 5) = 1
ActiveWorkbook.Sheets(SheetName_Goal_tmp).Range(Cells(i, 6), Cells(i, 8)).Copy
ActiveWorkbook.Sheets(SheetName_Goal).Range(Cells(i, 6), Cells(i, 8)).PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Else
ActiveWorkbook.Sheets(SheetName_Goal).Cells(i, 5) = 0
End If
Next
End Sub
На локальном сервере есть файл Excel с возможностью совместного пользования. Одна часть листов файла заполняется пользователями, другая только макросом из хранилища БД. При этом те данные которые заполняются из хранилища являются справочной информацией и пользователь не должен иметь возможность править\ изменять эти листы. Соответственно когда запускается макрос для загрузки данных из ХД появляется ошибка, макрос не может записать информацию в ячейки, которые закрыта для редактирования пользователями в режиме совместного использования.
Задача: Загрузить необходимые данные из хранилища таким образом, чтобы пользователи имели возможность просмотра этой информации без редактирования, при этом важное условие, чтобы книга была в совместном доступе, так как есть листы, в которые рулями тянется информация с листов заполненных макрасом и пользователи вносят в эти листы данные. Чтобы было понятнее, приведу пример: макрасом из ХД формируются справочники (Сотрудник,Подразделение,Должность) на отдельных листах, потом информация правилами внутри книги подтягивается в итоговую сводную таблицу, в которой пользователи вносят данные в режиме совместного доступа. Возможно такое реализовать без сильных потерь в функционале?