Страницы: 1 2 След.
RSS
Как присвоевать в форме колонкам ListBox-а значения
 
Если я имею ListBox с одной колонкой, тогда могу сразу присвоевать значения сразу таким образом:  
ListBox.List=dic.keys  
 
Но теперь у меня ListBox тремя колонками (ListBox.ColumnCount = 3).  
Разве невозможно, сразу задать значения второй колонке?  
Знатоки, помагите, пожалуйста...
 
или формируйте массив с тремя столбцами или additems в каждом
Живи и дай жить..
 
А как это сделать? Как сформировать массив? если можно, подробнее, пожалуйста...
 
ну.. в вашем случае, наверное, лучше additems.. - читайте справку  
 
из словаря сформировать массив с тремя столбцами или сложно( требуются нелегальные  для vba операции с памятью) или не быстрее, чем additems..  
 
 
хотя на этапе создания самого словаря..    
 
для чего у вас словарь?
Живи и дай жить..
 
Спасибо, СЛЭН за внимание... Вы очень добры, как вижу... Если вас не затруднит, до конци прочитать мою задачу, я вам ее предложу :-)  
 
Ну... тогда целиком поставлю задачу:  
 
В sheets(1) имею таблицу, где:  
- columns(4) - это идентификаторы организации (Integer)  
- columns(5) - названия организации (String)  
- columns(6) - руковадители организации (String)  
- columns(8) - названия продуктов (журналы, газеты и т.д.), которых они заказали.  
 
Я написал макрос, с помощью которого в ListBox1 (с флажками) занес названия продуктов (columns(8)). Когда оператор вставит флажки в ListBox1, программно делаю новый ListBox2, который состоит из отмеченных в ListBox1. Для этого и понадобился словарь (переделал функцию, которую нашел на этом сайте (UniqueValues со своей процедурой BubbleSort)).  
 
Тепер моя задача - внести в ListBox2 (с флажками, с 3-мя колонками: 1. идентификаторы; 2. названия; 3. руковадители организации) упорядоченный, отфильтрованный массив из columns(4:6).  
 
Заранее благодарю...
 
{quote}{login=varancoveli}{date=14.05.2011 04:13}{thema=}{post}Тепер моя задача - внести в ListBox2... {/post}{/quote}  
А задача Слэна теперь - нарисовать таблицу, форму с ЛистБоксами (или ЛистБоксы на листе?) и показать Вам решение.
 
тестирование объекта "доброта слэна" продолжается...  
следите за нашими анонсами!!!
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Товарищ Юрий М, я не такой хитрый, как вы подумали :-)  
Если вы мне скажите, как можно, сразу задать значения колонкам ЛистБокса, с остальним я сам справлюсь ...
 
{quote}{login=слэн}{date=14.05.2011 10:47}{thema=}{post}ну.. в вашем случае, наверное, лучше additems.. - читайте справку  
{/post}{/quote}  
это вам ещё утром отвечено.  
читали?  
что именно не поняли?
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
{quote}{login=varancoveli}{date=14.05.2011 04:27}{thema=}{post}Товарищ Юрий М, я не такой хитрый, как вы подумали :-) Если вы мне скажите, как можно, сразу задать значения колонкам ЛистБокса, с остальним я сам справлюсь ...{/post}{/quote}  
Видимо, Вы не поняли намёк :-) Просто следует приложить пример. Предварительно ознакомившись с ограничениями на размер файлов. В Правилах.  
А сказать могу: перебираем циклом List в первом ListBox, если отобран - добавляем нужные столбцы в List второго.
 
Здравствуйте.  
Есть некая UserForm, в которой есть ListBox.  
Возможно ли средствами VBA заполнить второй (к примеру) столбец выделенной строки значением из TextBox? (Не прибегая к ячейкам листа).  
Пыталась сделать с помощью addItem, но безуспешно.  
Спасибо.
 
{quote}{login=varancoveli}{date=14.05.2011 04:27}{thema=}{post}Товарищ Юрий М, я не такой хитрый, как вы подумали :-) Если вы мне скажите, как можно, сразу задать значения колонкам ЛистБокса, с остальним я сам справлюсь ...{/post}{/quote}  
Вашего файл так и нет... Вот примерный код для двух ListBox на форме:  
Private Sub CommandButton1_Click()  
Dim i As Long, x  
x = 0  
   With Me.ListBox2  
   For i = 0 To Me.ListBox1.ListCount - 1  
       If Me.ListBox1.Selected(i) = True Then  
           .AddItem ""  
           .List(x, 0) = ListBox1.List(i, 0)  
           .List(x, 1) = ListBox1.List(i, 1)  
           .List(x, 2) = ListBox1.List(i, 3)  
           x = x + 1  
       End If  
   Next  
   End With  
End Sub
 
Диана, привет!  
Может быть передумаете - не на событие изменения?  
Ведь ввод КАЖДОГО символа будет вызывать это событие.
 
{quote}{login=Юрий М}{date=14.05.2011 05:16}{thema=}{post}Диана, привет!  
Может быть передумаете - не на событие изменения?  
Ведь ввод КАЖДОГО символа будет вызывать это событие.{/post}{/quote}  
 
Здравствуйте, Юрий.  
Вот именно :)  
Длина текстбокса = 2 символа, поэтому можно пожертвовать ресурсами...
 
Тогда пробуем так:  
Private Sub TextBox1_Change()  
   If Len(Me.TextBox1) = 2 Then  
       For i = 0 To Me.ListBox1.ListCount - 1  
       If Me.ListBox1.Selected(i) = True Then  
           Me.ListBox1.AddItem ""  
           ListBox1.List(i, 1) = Me.TextBox1  
           x = x + 1  
       End If  
   Next  
   End If  
End Sub
 
Строку    
x = x + 1  
можно убрать: осталась от предыдущего примера :-)
 
Юрий! Спасибо в очередной и далеко не последний раз! Разбираюсь :)
 
Не забыть указать, что ДВА столбца.
 
И все вроде работает.... :)  
Последний момент... заголовки вряд-ли получится присвоить, если не прибегать к ячейкам листа? :)
 
{quote}{login=Diana}{date=14.05.2011 05:48}{thema=}{post}заголовки вряд-ли получится присвоить, если не прибегать к ячейкам листа? :){/post}{/quote}  
При таком варианте - нет. Только Label над ListBox. Или брать RowSource с листа.
 
Далее по свойствам ListBox :)  
Возможно ли как-нибудь несложно сделать, чтобы можно было вручную раздвигать и сдвигать ширины столбцов? (как в стандартных окнах Windows)?
 
Спасибо, Дмитрий, поняла :)
 
Написала небольшой макрос добавления sText в выделенную строку ListBox в столбец column.  
 
Sub changeGruntDirectory(sText As String, column As Integer)  
With UserForm1.LBB  
   'Запись значений в listbox  
   For i = 0 To .ListCount - 1  
       If .Selected(i) = True Then  
           UserForm1.LBB.List(i, column - 1) = sText  
       End If  
   Next i  
End With  
End Sub  
 
Но проблемка, при значении column больше 10 (а их всего 13)  
Run-time error '380':  
Could not set the List property. Invalid property value и выделяет строку: "UserForm1.LBB.List(i, Icolumn - 1) = sText"  
Что сие может означать?
 
UserForm1.LBB - это, конечно, лишнее было в 6-ой строке... :)
 
У меня работает (см. файл). Пробовал и строки длиннее 256 символов - тоже ошибки нет:  
changeGruntDirectory String(257, "s"), TextBox1
 
:) привет, Казанский! запустила твой файлик и ошибка компиляции сразу - не может найти проект или библиотеку :) ([A1:M5])
Excel 2010. Похоже, домучила его всерьез...
 
Привет, Ди! А так?  
arr = Range("A1:M5").Value  
А где твоя аватара с роскошныи декольте? ;)
 
Алексей, у Вас там какая то Web Components библиотека лишняя. Отключил миссинг, все кажется работает. А Диана видно пароль забыла:)
 
:) ага, действительно, работает. Здравствуйте, Игорь :) Пароль как раз помню, вот логин - нет :)  
 
В общем, только что заново создала UserForm пустую, заполнила ее программно через массив (mData (1to25, 1 to 13)), все работает.... видимо, где-то просчиталась... буду искать...  
Всем спасибочки за помощь!
 
Да, прошу пардону, это я на предыдущий вопрос Дайаны  
"Возможно ли как-нибудь несложно сделать, чтобы можно было вручную раздвигать и сдвигать ширины столбцов?"  
хотел предложить использовать "Microsoft Office Spreadsheet", но отвлекся, а потом и вопрос отпал.
Страницы: 1 2 След.
Читают тему
Наверх