Страницы: Пред. 1 2
RSS
Форма поиска по списку, Удобный поиск по аналогии с решением от GIGant + 2..3 колонки
 
по варианту all_2.xlsb (пост #27) от SAS888
Скрытый текст
.по варианту FindToPrice170816.xlsb (пост #28) от AAF
Скрытый текст

Общее:
- в ListBox'е не сохраняется количество знаков после запятой (на форуме мельком натыкалcя на тему по этому вопросу). Поищу...
Может я нафантазировал чего... ибо решения не видАл.
- прокрутка колёсиком мыши не работает. Это исправимо?

p.s. Честно сказать, я сравниваю с решением от GIGant. И очень меня расстроило заявление от Sanja, что нельзя доработать ListBox в этом решении.

Надеюсь, мои комментарии конструктивны...
Изменено: jack_21 - 15.08.2017 22:00:51
 
Цитата
jack_21 написал:
не даёт изменить размеры и положение элементов в форме
Цитата
jack_21 написал:
при двойных кликах по шапке ListBox - ширина колонок изменяется по непонятному алгоритму. Иногда сужается до нуля.
А Вы попробуйте мышкой поменять ширину столбцов...
Цитата
jack_21 написал:
при многократной установке/снятии флажка в CheckBox - уменьшается высота нижнего ListBox'ов
Вы можете менять высоту.
Цитата
jack_21 написал:
в форме поиска формула из этой ячейки стирается
Не обсуждалось, но программно используя форму проставить формулы не представляет труда, а если в форму заточить конкретно, то теряется универсальность.
Цитата
jack_21 написал:
что бы вернуться на лист (поставить курсор) надо закрыть окно формы поиска. С меню тоже самое
Тут я вообще не понял...  8-0  Этого не может быть!
Цитата
Хотелось бы, чтобы окно закрывалось по кнопке Cancel или "[x]".
А что не закрывается?
Изменено: AAF - 15.08.2017 22:07:23
 
По пунктам:
   1. Теперь макрос не считает сумму. В столбце Summa таблицы прописана формула.
   2. Размеры и положение каких элементов должна позволять изменять форма? Не понятно (возможно это решается в  п. 3)
   3. Теперь форма открывается в не модальном режиме, что позволяет работать с ячейками листа и меню Excel не закрывая форму.
   4. Если предварительно выделить УЖЕ ЗАПОЛНЕННУЮ ячейку в столбце Name, то позиция по DblClick будет помещена в эту строку, т. е. существующая строка будет заменена. Иначе, позиция будет добавлена в конец таблицы.

Общее:
   1. Зачем Вам в ListBox-е конкретное количество знаков после запятой? ListBox нужен только для визуального выбора требуемой позиции. Для того, чтобы в результирующей таблице значения отображались так, как Вам нужно - установите требуемый формат в соответствующих столбцах (ячейках) таблицы. И вид будет такой, как Вам нужно, и младшие знаки не потеряются (пример формата столбцов Price, Price2 и Summa в файле).
   2. Прокрутку строк в ListBox-е колесиком мыши в Excel сделать можно, но, достаточно сложно (используя WinAPI и учитывая версию и разрядность Windows). Можно просто выделить строку, и, не отпуская кнопку мыши, тянуть вниз или вверх. При достижении нижней (верхней) границы окна ListBox-а, будет скроллинг строк, причем, с регулируемой скоростью, в зависимости от смещения курсора мыши от границы ListBox-а. По мне, так этого вполне достаточно.

Файл во вложении. Все ли так, как нужно?
P.S. Всех этих вопросов не было  в начальной задаче. Постарайтесь указывать все необходимые требования сразу, а не постепенно...
Изменено: SAS888 - 16.08.2017 10:18:19
Чем шире угол зрения, тем он тупее.
 
Цитата
SAS888 написал:
Постарайтесь указывать все необходимые требования сразу, а не постепенно...
Стараюсь. Но, вы же понимаете, как всегда мысли роятся в голове... ;)

Цитата
SAS888 написал:
Прокрутку строк в ListBox-е колесиком мыши в Excel сделать можно, но, достаточно сложно
Ну и чёрт с ней...
Цитата
SAS888 написал:
ListBox нужен только для визуального выбора требуемой позиции
"Согласен. Полыхаев." (с)
 
Извиняюсь,  что пропал...
Вариант all_3.xlsb - всё работает как надо.
 
jack_21, а мои вопросы проигнорите?  :)
 
Цитата
AAF написал:
А Вы попробуйте мышкой поменять ширину столбцов...
Мышкой ширина столбцов регулируется. Но как-то не чётко. Надо привыкнуть...  :oops:
Цитата
AAF написал:
Вы можете менять высоту.
Каким образом? Мышкой не получается. Изменяя размеры через View Object, размеры верхнего ListBox всё равно сужаются по высоте при снятии-установки 2ой галки в CheckBox. В принципе, это терпимо...
Цитата
AAF написал:
Не обсуждалось, но программно используя форму проставить формулы не представляет труда, а если в форму заточить конкретно, то теряется универсальность.
Согласен. В этом случае, можно создать ещё кнопку "Посчитать", которая вставит формулу и посчитает сумму/-ы по строкам и по колонке SUMMA.
Цитата
AAF написал:
jack_21  написал:
что бы вернуться на лист (поставить курсор) надо закрыть окно формы поиска. С меню тоже самое Тут я вообще не понял...    Этого не может быть!
Хм... Теперь ЭТО пропало. Может у меня какой баг.  8-0

Цитата
AAF написал:
А что не закрывается?
Закрывается. Но, кажется, оно не должно было бы закрываться по "ОК". Я это имел ввиду. А может мне это только кажется...  :oops:  
 
jack_21, Не надо привыкать, я просто набросок сделал и показал, но доводку еще не делал. По  последним сообщениям стало понятно, что имелась ввиду именно, как бы выбор из списка для вставки в ячейку. Доделаю скину для коллекции, но несколько другую, чем all3. Просто нет смысла делать одинаковую. Пусть будет разнообразие. Мне так кажется... А там сами решите или кому пригодится... :)
 
Цитата
AAF написал:
Пусть будет разнообразие. Мне так кажется...
Да, разнообразие - это хорошо. Вот всё-таки над +/- каждого из вариантов.
Буду пробовать "прикругить" оба варианта к моим файлам.
 
Вопрос дилетанта.
А если справочник будет уже подготовлен с заданным порядком колонок (с пустыми колонками)
это облегчает задачу вставку найденной строки по даблклику? То есть, строка из 5..7 ячеек как бы полностью переносится, не изменяя порядка.

Дело в том, что справочник создаётся ежедневно на одном листе с помощью макроса. То есть поменять колонки местами ещё одним макросом не представляет труда.
 
В моем случае переносится по названиям столбцов и их порядок никак не влияет на процесс
Кроме того в форме данные располагаются в соответствии с получателем, но поиск в столбцах источника, которые не присутствуют в получателе, сохраняется.
Главное и необходимое условие обеспечить соответствие наименований столбцов источника - получателя.
 
Цитата
AAF написал:
соответствие наименований столбцов источника - получателя
вот с этим я уже столкнулся - изменив название столбца в шапке таблицы, в этот столбец перестали записываться данные.
Но если на источнике задать название идентичное - всё заработало.

!!! Добавив в источник колонку с названием "ед. изм." и прописав в каждой ячейки столбца "шт" - эти данные стали переноситься в соответствующую ячейку результирующей таблицы.
Изменено: jack_21 - 19.08.2017 19:53:17 (+добавка2)
 
Зато порядок не беспокоит...
Порядок меняется чаще, а еще добавляются столбцы прямо в посреди получателя, поэтому здесь автоматизировано, а вот если изменить наименование, то ни какая система не поймет... Тогда нужно писать словарь соответствий. :) Но это уже другая история....
Если необходимо иметь разные наименования столбцов, то как костыль, можно предложить хранение этих наименований в примечаниях заголовко получателя. Это самый простой способ для не редактирования в VBA при изменении.
Изменено: AAF - 19.08.2017 19:52:25
 
OK, а если усугубить - вставить над результирующей таблицей строки 8-10шт?
Runtime Error '9'
Subscript out of range
и подсвечивает строку жёлтым [ReDim aData(0 To UBound(aSour) - 2, 0 To d.Count - 1): j = -1]
 
Тогда нужно критерии определения строки заголовков(полей)...
Это обычно сделать не просто, т.к. простым перебором соответствий наименований может не обойтись, т.к. в шапке над таблицей могут оказаться такие же слова. :)
В моих файлах всегда и везде заголовки находятся в строке 10, но при этом я оставляю параметр для указания другого значения, если необходимо... Но по умолчанию =10
Изменено: AAF - 19.08.2017 20:10:43
 
SAS888, заранее извиняюсь за возможный сумбур в моём изложении...
Долго мучал ваш файл. Можно попросить немного "допилить" ваш инструмент?

В порядке приоритетов:
1. После вставки по DblClick из ListBox осуществить переход курсора на одну ячейку вниз.
Вставил "ActiveCell.Offset(1, 0).Select". Вроде работает (УРААА!!!). Может это повлечь ещё какие-то изменения?
2. Вставлять данные в выделенную ячейку. Даже если ActiveCell НЕ В СТОЛБЦЕ 7. Сейчас, я так понял адресация задаётся через вот это a=Array (...).
3. Собирать данные (справочник) не с листа той же книги, а с книги/листа на соседнем диске, десктопе или на сетевой папке //?
4. Вместо кнопки организовать вызов ФормыПоиска по шорткату - Ctrl+Shift+S. Вроде, свободно сие сочетание для Excel 2010.

Вопросы.
1. Где прописывается в коде ВЫБОР ячейки, куда ВСТАВЛЯЮТСЯ данные по DblClick в ListBox?
Или где почитать про это? Что-то ГУГЛ не дал мне ничего полезного (понятного?) на слова "Вставка данных в активную ячейку по DblClick из ListBox"
2. Переменные i j k - что определяет каждая из них?
3. Что бы сместить таблицу влево, подправил a=Array (...). Каждое значение уменьшил на 5.
Но тогда по DblClck в ListBox строчка добавляется в конец списка, вне зависимости от того, где стоит курсор. Что ещё необходимо подправить?
4. Почему нету папочки Modules под папкой Forms в дереве проекта?
5. Из этого макроса возможно сделать надстройку? Нету никаких ограничений? Может это не возможно для данного проекта?
http://www.excel-vba.ru/chto-umeet-excel/kak-sozdat-svoyu-nadstrojku/
Что бы работало во всех открываемых файлах.
Скрытый текст
Изменено: jack_21 - 06.11.2017 11:54:52
 
Здравствуйте.
Посмотрите прикрепленные файлы.
Перед началом работы установите надстройку "Search.xlam".
Затем, из любой ОБЯЗАТЕЛЬНО СОХРАНЕННОЙ книги, сочетанием клавиш "Ctrl+Shift+S" запускаете макрос из этой надстройки.
Появится окно выбора файла с базой данных, который может располагаться в произвольном месте.
Укажите этот файл и нажмите "Извлечь данные".
Отобразится наш ListBox с полученными данными, с которым Вы умеете работать.
По DblClick по значению ListBox-а, данные этой строки будут вставлены в оговоренном порядке, начиная с активной ячейки листа.
После вставки очередной строки, активная ячейка сместится вниз на 1 позицию.

ВАЖНО: данные из файла базы извлекаются из листа с именем "all".
Имя файла базы менять можно, а имя листа нельзя.
Структура данных (порядок и назначение столбцов) на листе "all" должна соблюдаться.

Посмотрите и проверьте. Все ли так, как требовалось?
P.S. Проверьте почту...
Изменено: SAS888 - 26.09.2017 10:36:04
Чем шире угол зрения, тем он тупее.
 
Огромное спасибо за труды.

Протестировал.
Что-то пошло не так. После выбора базы (из вашего архива) и извлечения данных ListBox не отображается.
При самой первой попытке ListBox появился и тут же пропала, и всё - больше не появляется. Я даже не успел её рассмотреть.

Допустим форма эта появилась и она заполнена данными из базы.
Если её закрыть, то как вызвать повторно?
 
См. почту...
Чем шире угол зрения, тем он тупее.
 
Огромное спасибо SAS888 за доработку надстройки поиска и вставки!!!
 
AAF, Доброго времени а можно времени, а можно еще один снекбокс добавить чтоб не удаляло предыдущие данные а добавляло к ним. Спасибо
Изменено: alex1210 - 06.11.2017 17:58:52
 
А в какую форму?... Я уже не помню. :)
Можно новуювзять за основу.
Страницы: Пред. 1 2
Наверх