Страницы: Пред. 1 2
RSS
Формы. Как заполнять одну и ту же форму (ListBox) разными данными в зависимости от выделения
 
Цитата
Дмитрий Щербаков написал: Сократим?
Не советую, но можно еще сократить:
Код
Sub ReDimБезDim()
  ReDim a(1 To 20), b(10 To 20, -10 To 3), c(20, -10 To 3, -5 To -3)
End Sub

И это сработает независимо от Option Explicit
 
А что касается самой темы, то в первом сообщении ошибки такие:
вместо: FormSearch.ListBoxItems.List.Value = [_gents]
должно быть: FormSearch.ListBoxItems.List = [_gents].Value
То же самое - и для строки с [_ladies]
и Cancel=True нужно бы добавить
Изменено: ZVI - 12.05.2018 18:40:25
 
ZVI, ответ был по поводу
Цитата
Anchoret написал:
Был небольшой спор касательно ReDim Preserve без предварительного ReDim'а массива
 
Господа, не могу не согласиться с вами, что лучше задать массив с запасом, а потом пресервить в самом конце — так и правильнее и быстрее  ;)
Дмитрий Щербаков, спасибо вам за объяснение про InStr - заменю Like на него, а то пришлось даже дополнительную функцию писать, чтобы заменять служебные символы, как часть текста в проверяемых строках, что, разумеется, ещё более замедляет работу.
ZVI, совершенно верно - тупанул я насчёт положения .Value  :D да и про Cancel=True забыл
однако, наполнять ListBox напрямую, в данном случае не так удобно (как мне кажется), как передавать диапазон в паблик-переменную массива, т.к. данная переменная потом также используется по событию изменению текстбокса

Огромное всем спасибо за примеры, варианты и наставления!
Изменено: Jack Famous - 14.05.2018 11:12:17
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
На счёт Like медленнее Instr. Я бы не сказал, что он в несколько раз медленнее. Тестировал на 200к строк отличия в доли секунд. Ну это просто как удобнее наверно.
Мастерство программиста не в том, чтобы писать программы, работающие без ошибок.
А в том, чтобы писать программы, работающие при любом количестве ошибок.
 
Alemox, спасибо. Думаю, что как и всегда - зависит от случая. В том примере поиска подстроки в массиве действительно не очень удобно использовать Like хотя бы из-за возможного наличия служебных символов (а это даже скобки) в проверяемых массивах и элементах.
А вот в качестве наполнения формы я, пожалуй, оставлю именно Like, т.к. тут как раз нужны звёздочки для неточного поиска  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Я тестировал Like и Instr...
Все зависит от длины строки. при длинной строке разницы почти нет, но при до 128 Instr быстрее (не буду говорить во сколько раз не помню).
Я тоже использую Like именно из-за синтаксиса...
Есть у Instr преимущество по частному указанию CompareMode, в то время, как Like требует Option Compare Text...
Но если Instr дать переменные в виде String, тот только ветер в ушах и при данных условиях я, кажись не тестировал этот вопрос.
При принятии решений следует учитывать тип переменных участвующих при применении тех или иных функций.
Но не стоит забывать, что если мы работаем с листом, то массив всегда Variant, а строка Variant/String, а числа всегда Variant/Double, и т. д.
 
AAF, благодарю за пояснения  :)
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
Jack Famous, Можно бы было затестировать данный вопрос здесь, но не все так просто (29)...  :D    :D    :D  (но это правда)
Может создать для этого тему?
Изменено: AAF - 14.05.2018 15:56:10
 
AAF, обязательно сделаю, когда доберусь))
Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄
 
AAF, Дмитрий Щербаков, спасибо за наглядный пример) Значит зря я к ReDim Preserve массивы заранее создавал)

Как говорится: "Век живи, век учись... и дураком помрешь."
 
Цитата
AAF написал:
Like требует Option Compare Text
Аналогично SQL:
Код
UCase(s) Like UCase(t)
Владимир
Страницы: Пред. 1 2
Наверх