ali_vlad
|
На ЛО переехал недавно, сильно не ругайте. Интересует следующее: 1. Наполнение списка с другого листа (по условию). 2. Событие выбора элемента списка. 3. Узнать выбранное значение 4. Очистка списка.
Если можно, пример по одной строчке.
|
|
« Последнее редактирование: 23 Октябрь 2019, 16:39 от ali_vlad »
|
Записан
|
|
|
|
economist
|
1. Наполнение списка с другого листа (по условию). С листа эл. таблицы Calc (ods/xls)?
|
|
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
|
economist
|
Все это есть в книгах Эндрю Питоньяка и кое-что в книге Александра Бейна, на русском, гуглится влет.
Можно просто в свойствах контрола List/ComboBox указать Source и LinkedCell (ячейки, диапазоны) и напрямую макросом их читать/обновлять/стирать, если не хочется нырять в методы списков Add/Remove итд.
|
|
« Последнее редактирование: 23 Октябрь 2019, 17:15 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
ali_vlad
|
Пипец, ну и ответ, даже ссылки нет. Гугл выдаёт всяких художников и композиторов.
|
|
|
Записан
|
|
|
|
Bigor
|
Поищи по форуму на питоньяка ссылка была точно
|
|
|
Записан
|
|
|
|
Bigor
|
Вот что выдал поиск по спискам в разделе Basic. По ссылке лежит файлик со списком, ниже еще несколько.
|
|
|
Записан
|
|
|
|
ali_vlad
|
Вот что выдал поиск по спискам в разделе Basic. По ссылке лежит файлик со списком, ниже еще несколько. Да уж, после VBA тут придётся начинать изучение с самого начала. Контекстной помощи при вводе нет, справки нет. Обращение к элементам вообще темный лес. Подскажите литературу по basic'у для чайника.
|
|
|
Записан
|
|
|
|
ali_vlad
|
Мне надо, чтобы в поле со списком добавились значения ячеек (не диапазон) А1, А2, А3, А4, А5. Можно через массив. Ошибка вылезает, я так и не понял почему.
|
|
|
Записан
|
|
|
|
economist
|
В файле 2 способа, оба без макросов.
А макросом можно собрать значения и по одному добавить их в контрол. Но нужно писать обработчики событий, продумывать логику итп. Calc эту грязную работу может делать прекрасно сам (вложение).
Списки "на формулах" (Данные - Проверка) - могут быть саморасширяемыми и динамическими, зависящими от выбранных значений в других списках. При этом без макросов вообще. И работать будут быстрее чем макрос, даже на сотнях-тысячах строк (на десятках тыс. будут тупить любые способы кроме баз данных, где поддерживается понятие RowSet и курсор).
|
|
« Последнее редактирование: 25 Октябрь 2019, 08:17 от economist »
|
Записан
|
Руб. за сто, что Питоньяк Любит водку и коньяк! Потому что мне, без оных, - Не понять его никак...
|
|
|
rami
|
Ошибка вылезает, я так и не понял почему. Элемент "Поле со списком" находится в форме, вы пытаетесь вставлять данные прямо в форму, а не в список. Sub Main Dim vData, oForm, oCombo, i% vData=ThisComponent.sheets(0).getCellRangeByPosition(0, 0, 0, 5).DataArray 'A1:A6 oForm=ThisComponent.DrawPages(0).Forms.getByName("fOborud") 'форма oCombo=oForm.getByName("sOborud") 'комбобокс For i=0 To UBound(vData) oCombo.insertItemText(i, vData(i)(0)) 'вставка данных в комбобокс Next End Sub
|
|
|
Записан
|
|
|
|
ali_vlad
|
К сожалению, ни эксель, ни калк не смогут формулами сделать то, что мне нужно. Конечно, более подходящий для этого способо - БД, но sql я не знаю вообще. Может когда нибудь доросту до БД, но не сейчас. Мне нужны выборки с разных листов многлуровневыми связанными списками. В старбейсике я хоть что-то понимаю. За пример спасибо, буду осмысливать. Продолжение следует.
|
|
|
Записан
|
|
|
|
ali_vlad
|
Ошибка вылезает, я так и не понял почему. Элемент "Поле со списком" находится в форме, вы пытаетесь вставлять данные прямо в форму, а не в список. Sub Main Dim vData, oForm, oCombo, i% vData=ThisComponent.sheets(0).getCellRangeByPosition(0, 0, 0, 5).DataArray 'A1:A6 oForm=ThisComponent.DrawPages(0).Forms.getByName("fOborud") 'форма oCombo=oForm.getByName("sOborud") 'комбобокс For i=0 To UBound(vData) oCombo.insertItemText(i, vData(i)(0)) 'вставка данных в комбобокс Next End Sub Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал. Кстати, как очистить список полностью?
|
|
|
Записан
|
|
|
|
mikekaganski
|
Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал. Честно хотел ответить. В google.com вбил "документация", открыл первую ссылку, поискал .additem ... ЧЯДНТ? 
|
|
|
Записан
|
|
|
|
ali_vlad
|
Я не пойму, почему в документации используется .additem, который здесь не работает. А здесь используется .insertitemtext, который я нигде не встречал. Честно хотел ответить. В google.com вбил "документация", открыл первую ссылку, поискал .additem ... ЧЯДНТ?  Читать умеем? Нет? А почему? НЕ РАБОТАЕТ НЕ РАБОТАЕТ Так понятно?
|
|
|
Записан
|
|
|
|
|