Выбрать дату в календареВыбрать дату в календаре

Страницы: 1 2 След.
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
Александр П., да, точно так, спасибо Вам. Только, подскажите, пожалуйста, а что это за
Код
Flag = False
и
Код
Flag = True
Изменено: Kyzen_avi - 24.10.2018 03:36:21
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
vikttur,
В 10-м посте я написал конкретный вопрос.
"Почему в данном конкретном примере код просто не закончил цикл, а отработал его до вот этого условия и добавил строку в таблицу, тогда как в таблице есть и "Отчет по складу" и "Октябрь 2018" в одной строке"
Ведь даже убрав ваще все екситфоры цикл не работает как цикл.
Как прописать алгоритм цикла так, что бы, если не найдя первое условие в первой строке первого столбца код искал его в следующей и тд. Как только он находит первое условие, то проверяет второе условие так же циклом по всем строкам столбца 3. Если нашел второе условие, то просто выходит из цикла, если нет, то добавляется одну строку с
Код
                    UF_MainListRow.Range(1) = "Отчет по складу"
                    UF_MainListRow.Range(2) = "1"
                    UF_MainListRow.Range(3) = "Октябрь 2018"
При это если он ваще не нашел первое условие в первом столбце то тоже добавляется одну строку с
Код
                UF_MainListRow.Range(1) = "Отчет по складу"
                UF_MainListRow.Range(2) = "2"
                UF_MainListRow.Range(3) = "Октябрь 2018"
Изменено: Kyzen_avi - 23.10.2018 16:25:17
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
vikttur, так я Ваш код ничем особо и не поменял. Просто добавление строк вставил в саму процедуру, а не отдельным сабом.
Плюс, если определить Dim ar As Range, то вылезает ошибка и ругается на UBound.

Цитата
vikttur написал:
Я уже Вам писал!
Так мне нужно, что бы он нашел совпадение  "Отчет по складу" в первом столбце и "Октябрь 2018" в третьем в одной и той же строке. Если не нашел, то добавляется строка, если нашел то нет...
Изменено: Kyzen_avi - 23.10.2018 15:44:34
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
Юрий М, в общих чертах. Я вижу, что он находит несовпадение в первой строке с искомым и улетает на 20-тую строку кода. Как его заставить искать дальше я не понимаю. Запутался совсем...
Изменено: Kyzen_avi - 23.10.2018 15:33:33
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
vikttur,Спасибо за подсказку. Делал на автомате и не задумывался.

Сделал пример максимально приближенный к боевому
Код
Sub sfsdfsdf()
    Set ShUF_Main = ThisWorkbook.Worksheets("Лист1")
    Set UF_MainListObj = ShUF_Main.ListObjects("Перечень_накл_tb")
    Set UF_MainListRow = UF_MainListObj.ListRows.Add
    
    Dim ar, k
    ar = Range("Перечень_накл_tb")
'    With UF_Main
        For k = 1 To UBound(ar)
                If ar(k, 1) = "Отчет по складу" Then
                    If ar(k, 3) = "Октябрь 2018" Then
'                    Call RaschetDS
                    Exit For
                Else
                    UF_MainListRow.Range(1) = "Отчет по складу"
                    UF_MainListRow.Range(2) = "1"
                    UF_MainListRow.Range(3) = "Октябрь 2018"
'                    Call RaschetDS
                End If
            Else
                UF_MainListRow.Range(1) = "Отчет по складу"
                UF_MainListRow.Range(2) = "2"
                UF_MainListRow.Range(3) = "Октябрь 2018"
'                Call RaschetDS
                Exit For
            End If
        Next k
'    End With
End Sub
Почему в данном конкретном примере код просто не закончил цикл, а отработал его до
Код
                UF_MainListRow.Range(1) = "Отчет по складу"
                UF_MainListRow.Range(2) = "2"
                UF_MainListRow.Range(3) = "Октябрь 2018"
вот этого условия и добавил строку в таблицу, тогда как в таблице есть и "Отчет по складу" и "Октябрь 2018" в одной строке
Изменено: Kyzen_avi - 23.10.2018 15:22:22
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
Александр П.,Спасибо за помощь
vikttur, суть не в заполнении ячейки, а самом поиске.
Реальный кусок кода выглядит так
Код
    Dim ar, k    
    ar = Range("перечень_накл_tb")
    With UF_Main
        For k = 1 To UBound(ar)
            If ar(k, 1) = "Отчет по складу" Then
                If ar(k, 3) = .cbx_PeriodSpirt Then
                    Call RaschetSklad
                    Exit For
                Else
                    Set ShUF_Main = ThisWorkbook.Worksheets("Медикаменты")
                    Set UF_MainListObj = ShUF_Main.ListObjects("перечень_накл_tb")
                    Set UF_MainListRow = UF_MainListObj.ListRows.Add
                    UF_MainListRow.Range(1) = "Отчет по складу"
                    UF_MainListRow.Range(2) = ""
                    UF_MainListRow.Range(3) = .cbx_PeriodSpirt
                    Call RaschetSklad
                End If
            Else
                Set ShUF_Main = ThisWorkbook.Worksheets("Медикаменты")
                Set UF_MainListObj = ShUF_Main.ListObjects("перечень_накл_tb")
                Set UF_MainListRow = UF_MainListObj.ListRows.Add
                UF_MainListRow.Range(1) = "Отчет по складу"
                UF_MainListRow.Range(2) = ""
                UF_MainListRow.Range(3) = .cbx_PeriodSpirt
                Call RaschetSklad
                Exit For
            End If
        Next k
     End With
Он ищет в таблице совпадение в первом столбце "Отчет по складу", а во третьем - период из формы .cbx_PeriodSpirt и, если находит, то дальше происходит процедура RaschetSklad, а если не находит, то либо "Отчет по складу", либо период из формы .cbx_PeriodSpirt, то сначала добавляется в таблицу,
Код
UF_MainListRow.Range(1) = "Отчет по складу"               
UF_MainListRow.Range(2) = ""
UF_MainListRow.Range(3) = .cbx_PeriodSpirt
а потом процедура RaschetSklad.

Только так тоже не работает)) ,   Руки...мои руки...
Изменено: Kyzen_avi - 23.10.2018 11:09:15
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
vikttur, я предлагал новое название в сообщении, которое Вы потерли. Видимо, оно тоже не отвечает правилам форума.
У меня появилась потребность в помощи, ибо я совсем не понимаю в чем проблема и впустую просидев кучу времени с проблемой я решил сюда написать. Потратив кучу сил и изругавшись на себя, воображение мне больше не дает никаких вариантов названия. Поэтому смело удаляйте тему. Прошу прощения за потраченное время.
Найти в диапазоне значение и заполнить ячейку, почему цикл работает не до конца?
 
Добрый день!
Подскажите, пожалуйста, почему код работает не правильно.
Код ищет первое условие в столбце - находит. Проверяет второе условие и, не находя его в в строке с первым "октябрь 2018", не проверяет дальше, а останавливается. Понимаю, что я где-то не указал, что по второму условию цикл нужно продложить. Но где…
Перенос данных из умной таблицы (макрос)
 
Александр, это тут 10 строк, а в реале и условий больше и таблица существенно больше. Макросом побыстрее будет. Обработанные данные используются в регулярных отчета: нажал - сформировалось - распечатал - закрыл.
Перенос данных из умной таблицы (макрос)
 
Добрый день!
Помогите, пожалуйста, написать код, который бы перенес список продуктов из таблицы на листе1 на лист2 начиная с ячейки F5, причем именно те продукты, у которык в столбце "ответ" стоит "да".
Рисование границ в таблице
 
Юрий М,А я еще для эксперимента комментирую строчки по одной и ничего не меняется. еще думаю что за мистика, а они оказываются дублируют друг друга)) спасибо)
Изменено: Kyzen_avi - 02.09.2018 17:09:25
Рисование границ в таблице
 
Юрий М, а ты ж е-мае, точно... спасибо...
Рисование границ в таблице
 
Добрый день!

Мне нужно нарисовать в таблице границы.
Если рисовать их через select, но все работает только если открыт лист
Код
Sub wwww()
    With ThisWorkbook.Worksheets("лист1")
    Dim col, arr
    col = .Cells(.Rows.Count, Range("A13:A200").Column).End(3).Row
    arr = .Range(Cells(13, 1), Cells(col, 9)).Select
        With Selection
            .Borders.LineStyle = xlContinuous
            .Borders.Weight = xlThin
            .Borders(xlEdgeLeft).Weight = xlThin
            .Borders(xlEdgeTop).Weight = xlThin
            .Borders(xlEdgeBottom).Weight = xlThin
            .Borders(xlEdgeRight).Weight = xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            .Borders(xlInsideHorizontal).Weight = xlThin
        End With
    .Range("D8").Select
    End With
End Sub
Я пытаюсь сделать, что бы он работал в фоне.
Код
Sub wwww()
    With ThisWorkbook.Worksheets("лист1")
    Dim col, arr
    col = .Cells(.Rows.Count, Range("A13:A200").Column).End(3).Row
    arr = .Range(Cells(13, 1), Cells(col, 9))
        With arr
            .Borders.LineStyle = xlContinuous
            .Borders.Weight = xlThin
            .Borders(xlEdgeLeft).Weight = xlThin
            .Borders(xlEdgeTop).Weight = xlThin
            .Borders(xlEdgeBottom).Weight = xlThin
            .Borders(xlEdgeRight).Weight = xlThin
            .Borders(xlInsideVertical).Weight = xlThin
            .Borders(xlInsideHorizontal).Weight = xlThin
        End With
    .Range("D8").Select
    End With
End Sub
Но вылезает ошибка "object required"
И ругается на ".Borders.LineStyle = xlContinuous"

Что я не так сделал?
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
БМВ, и правда, "ларчик просто открывался"... Ищу всегда сложное решение, хотя все на поверхности. Спасибо!
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
БМВ, мне ее надо размножить во всем диапазоне строк умной таблицы. А сейчас около 200 и будет расти...
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
Казанский, прелесть умных таблицы - диапазоны. На сегодняшний день у меня файлик на 2000 строк кода, притом, что я макросами занимаюсь только месяц-полтора и я физически не могу охватить объем всех знаний, которые бы мне позволили безболезненно вносить правки в работу макросов. Может когда-то я взгляну на него и посмеюсь сам над собой, но сейчас меня может запутать любая мелочь...
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
Цитата
БМВ написал:
Предположу, что вы хотели ввести формулу и размножить её, то это просто по иному делается.
Вцелом, да, я понял, что нельзя формулу массива разом влипить в несколько ячеек умной таблицы. Размножить - это более точно слово. Подскажите как можно ее размножить на весь диапазон умной таблицы?  
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
vikttur, то есть мне надо все равно весь расчет провести в коде, а потом вставить результат?
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
vikttur, Я не особо в макросах, почти никак во всяких циклах, а надо из рабочего файла убрать формулы, что бы файл работал полегче. Все расчеты (вернее формулы ползут из макросов, считаются и отражают результат) как мог перенес в макросы, а с формулами массивами тупик...
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
Да, я вижу. А можно как-нибудь это обойти? Или нужно прописывать какой-то цикл, что бы не одновременно записывались данные, а строка за строкой?
Ошибка внесения данных в диапазон умной таблицы с помощью FormulaArray
 
Добрый день!
Подскажите, пожалуйста, почему нельзя внести данные в диапазон строк умной таблицы через FormulaArray? Вылезает ошибка "Нельзя установить свойство FormulaArray класса Range".
Вернее даже не почему, а как внести?
Макрос определения максимально значения в столбце умной таблицы
 
Sanja,Спасибо!
Макрос определения максимально значения в столбце умной таблицы
 
Добрый день!
Подскажите, пожалуйста, как макросами найти максимальное значение у диапазоне Номер_tb[Номер] умной таблицы?
Сравнить две таблицы и отличия вынести в третью
 
Спасибо, но массивом я умею. Хочу запилить в процедуру...
Сравнить две таблицы и отличия вынести в третью
 
Добрый день!
Помогите, пожалуйста. Нужно средствами VBA сравнить таблицы "Склад" и "Выдача" и отличия вынести  в таблицу "Результат".
В таблицах только цифры. Могут быть пустые ячейки.
Изменять номер строки в FormulaArray
 
БМВ,
Да, я теперь понимаю, что не согласовано.
Спасибо, что разобрались в проблеме...
Изменено: Kyzen_avi - 10.08.2018 10:01:16
Изменять номер строки в FormulaArray
 
Прошу прощения. Не тот файл. Исправил
Изменять номер строки в FormulaArray
 
Прикрепил в первом сообщении
Изменять номер строки в FormulaArray
 
Если поменять на ROW(G1), то ругается и выделяет желтым всю строку
Изменять номер строки в FormulaArray
 
Добрый день!
У меня есть проблема с кодом
Код
Worksheets("Акт приема").Range("D16:D18").FormulaArray = "=IFERROR(INDEX(Расчет!C,SMALL(IF(R5C6=Главная_tb[Номер акта],ROW(Главная_tb[Наименование])),ROW(R[-15]C[3]))),"""")"
Часть кода
Код
ROW(R[-15]C[3])
Которая выглядит как СТРОКА(G1) в массивной формуле при заполнении диапазона D16:D18 не меняется, то есть во все три ячейки залетает СТРОКА(G1) хотя должна меняться на СТРОКА(G1) СТРОКА(G2) СТРОКА(G3) и так далее . Сам я не знаю как это исправить. Помогите пожалуйста
Изменено: Kyzen_avi - 09.08.2018 17:44:49
Страницы: 1 2 След.
Наверх