Форум программистов, компьютерный форум, киберфорум
VBA
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6

Не получается заставить заработать цикл с найденным значением

18.09.2013, 10:52. Показов 955. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Visual Basic
1
2
3
4
5
6
7
8
9
10
11
12
13
Dim rrr As Range
Dim rngCurrent As Range
 Sheets("Лист1").Activate
Columns("B:B").Select
 
Set rrr = Selection.Find(What:="2", LookIn:=xlValues, LookAt:=xlWhole, SearchOrder:=xlByColumns, SearchDirection:=xlNext, MatchCase:=False)   'определяем ячейку в которой нужное значение
rrr.Select
 
   For R = 3 To Cells(1, 1).End(xlDown).Row
    N = R - 2
   Set rngCurrent = ActiveCell.Offset(1)
   ListBox1.List = Range(Cells(N, 1), rngCurrent(-1, 6).Address).Value
   Next R
Идея следующая есть колонка типа 1,1,1,1,2,2,2,2 Я поиском ищу значение 2, вношу в лист бокс и так далее пока не закончится столбец
Собственно вопрос, как правильно подставить значение из rrr в строку
ListBox1.List = Range(Cells(N, 1), Вот на это место).Value
Убил кучу времени, но решения так и не нашел, пробовал разные свойства объектов, пробовал через do... loop
Подскажите в какую сторону думать, где ошибка
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
18.09.2013, 10:52
Ответы с готовыми решениями:

Указать индексы элемента с найденным значением
Дана действительная матрица размером nxm, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем...

DataGridView - выделить строку с найденным значением
Здравствуйте, написал такой код для выбора нужной строки в DataGridView public void selectRow(string id) { foreach...

Указать индексы элемента матрицы с найденным значением
Дана действительная матрица размером n x m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем...

8
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
18.09.2013, 11:37
Что-то я не вполне понял. Вот так чтоль?

Visual Basic
1
2
3
4
5
6
7
8
9
Sub test()
Set wsh = ThisWorkbook.Worksheets(1)
 
For R = 3 To wsh.Cells(1, 2).End(xlDown).Row
 
   If wsh.Cells(R, 2).Value Like 2 Then ListBox1.AddItem Cells(R, 1)
 
Next R
End Sub
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6
20.09.2013, 10:14  [ТС]
Цитата Сообщение от korvindeson Посмотреть сообщение
Что-то я не вполне понял. Вот так чтоль?

Visual Basic
1
2
3
4
5
6
7
8
9
Sub test()
Set wsh = ThisWorkbook.Worksheets(1)
 
For R = 3 To wsh.Cells(1, 2).End(xlDown).Row
 
   If wsh.Cells(R, 2).Value Like 2 Then ListBox1.AddItem Cells(R, 1)
 
Next R
End Sub
Не, это только для ячейки, немного не то, тот код который я привел, рабочий, но он искал вверх по диапазону от значения которое возвращал поиск (наверное непонятно написал, прикрепляю эксель файл)
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6
20.09.2013, 10:23  [ТС]
Что-то типо этого, в общем идея была следующая: надо было выводить в этот лист бокс продажи за день.. Т.е. Ищем в списке все продажи с сегодняшней датой и выводим в лист бокс.... Но от затеи пришлось отказаться, достаточно долго выполняется процедура
Вложения
Тип файла: zip лента .zip (35.9 Кб, 4 просмотров)
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
20.09.2013, 11:16
Цитата Сообщение от pavel_rr Посмотреть сообщение
с сегодняшней датой
А что в примере считать за дату? С какой целью выводить в листбокс? Может сразу как-то обработать?
А по поводу медленно, можно и резвее сделать (хотя и тот что у вас мгновенно выполняется)
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6
20.09.2013, 11:51  [ТС]
Цитата Сообщение от korvindeson Посмотреть сообщение
А что в примере считать за дату? С какой целью выводить в листбокс? Может сразу как-то обработать?
А по поводу медленно, можно и резвее сделать (хотя и тот что у вас мгновенно выполняется)
Спасибо за помощь
"А что в примере считать за дату?" Столбец по которому запускается поиск
"С какой целью выводить в листбокс?"
Продавец продает товар из формы (заполняет артикул, цену, дата подставляется автоматом),по нажатию на кнопку появляется запись на листе: дата, артикул, цена, продавец не имеет доступа к листу продаж (от продавца этот лист закрыт специально), следовательно необходимо выводить для продавца список с товаром который он сегодня продал...

Я хотел сделать следующий алгоритм: добавить на форму продаж listbox и загружать в него данные из листа продаж
Но есть одно "но"
на листе продаж ведется учет продаж за все время, лист организован по датам
Ну и чтобы вывести данные в listbox, мне сначала надо найти сегодняшнюю дату (это будет первое значение в лист бокс) , а потом спуститься вниз по столбику до последнего значения, выгружая каждую строку из этого диапазона в listbox...
Т.е. если строк-продаж будет 20 а столибоков 7, то excel этим массивом будет долго заполнять listbox....
Получается, что с функцией listbox.list - листбокс будет все время заново весь массив обновлять дополняя его новой строкой продаж
Все было бы проще если бы listbox.additem работал с диапазоном (чтобы не обновлять все строки, а добавлять только одну), а он только ячейку добавляет =)
Миниатюры
Не получается заставить заработать цикл с найденным значением  
0
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6
20.09.2013, 11:59  [ТС]
Совсем забыл... Можно попробовать ведь и через additem каждый столбик по текущей строчке добавлять.... А columnwidth будет с additem работать ?(чтобы столбики ровные были)
0
1261 / 147 / 32
Регистрация: 11.02.2011
Сообщений: 418
20.09.2013, 14:08
Вот так?

PS только строчку надо поправить

ListBox1.List = Range(wsh.Cells(r, 1).Address, wsh.Cells(r2, 7).Address).Value
на
ListBox1.List = wsh.Range(wsh.Cells(r, 1).Address, wsh.Cells(r2, 7).Address).Value
Вложения
Тип файла: xls Форма-ПодсчётПродаж.xls (62.0 Кб, 5 просмотров)
1
0 / 0 / 0
Регистрация: 18.09.2013
Сообщений: 6
20.09.2013, 17:51  [ТС]
ахаха ))) Супер, спасибо
Visual Basic
1
Do While wsh.Cells(r2 + 1, 1).Value <> ""
Все так просто!
Что-то я не подумал так раньше сделать ))))
И я честно говоря и не надеялся, что Listbox вне Loop'а заработает....
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
20.09.2013, 17:51
Помогаю со студенческими работами здесь

Указать индексы элемента массива с найденным значением
Составить программу на языке Паскаль. Дана действительная матрица размером nxm, все элементы которой различны. В каждой строке выбирается...

Указать индексы элемента матрицы с найденным значением
Дана матрица размером 6х12 все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением, затем среди этих чисел...

Матрицы. Указать индексы элемента с найденным значением. Отсортировать матрицу по убыванию
Дана действительная матрица размера n*m, все элементы которой различны. В каждой строке выбирается элемент с наименьшим значением. Затем...

Как заставить заработать код
function ea(a, b, d) { a = document.createElement(a); if(b) for(c in b) a.setAttribute(c, b); d &amp;&amp; d.appendChild(a); ...

Как заставить блок try заработать?
Была задача ускорить работу программы с высокопроизводительными вычислениями (функции, выраженные несобственными интегралами). Решил...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
Настройка движения справочника по регистру сведений
Maks 29.03.2026
Решение ниже реализовано на примере нетипового справочника "ТарифыМобильнойСвязи" разработанного в конфигурации КА2, с целью учета корпоративной мобильной связи в коммерческом предприятии. . . .
Автозаполнение реквизита при выборе элемента справочника
Maks 27.03.2026
Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. При выборе "Спецтехники" (Тип Справочник. Спецтехника), заполняется. . .
Сумматор с применением элементов трёх состояний.
Hrethgir 26.03.2026
Тут. https:/ / fips. ru/ EGD/ ab3c85c8-836d-4866-871b-c2f0c5d77fbc Первый документ красиво выглядит, но без схемы. Это конечно не даёт никаких плюсов автору, но тем не менее. . . всё может быть. . .
Автозаполнение реквизитов при создании документа
Maks 26.03.2026
Программный код из решения ниже размещается в модуле объекта документа, в процедуре "ПриСозданииНаСервере". Алгоритм проверки заполнения реализован для исключения перезаписи значения реквизита,. . .
Команды формы и диалоговое окно
Maks 26.03.2026
1. Команда формы "ЗаполнитьЗапчасти". Программный код из решения ниже на примере нетипового документа "ЗаявкаНаРемонтСпецтехники" разработанного в конфигурации КА2. В качестве источника данных. . .
Кому нужен AOT?
DevAlt 26.03.2026
Решил сделать простой ланчер Написал заготовку: dotnet new console --aot -o UrlHandler var items = args. Split(":"); var tag = items; var id = items; var executable = args;. . .
Отправка уведомления на почту при создании или изменении элементов справочника
Maks 24.03.2026
Программная отправка письма электронной почты на примере типового справочника "Склады" в конфигурации БП3. Перед реализацией необходимо выполнить настройку системной учетной записи электронной. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru