Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: В "Label" формы брать текст из колонки  (Прочитано 13194 раз)
0 Пользователей и 1 Гость смотрят эту тему.
klaus
Участник

ua
Offline Offline

« : 22-01-2010 13:21 » 

В таблице екселя, значения первых ячеек колонок должны стать в Label формы, но количество колонок всегда разное...
« Последнее редактирование: 22-01-2010 13:32 от klaus » Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #1 : 25-01-2010 04:54 » 

а количество Label всегда одинаковое?
Записан

I Have Nine Lives You Have One Only
THINK!
klaus
Участник

ua
Offline Offline

« Ответ #2 : 25-01-2010 08:08 » 

В том то и дело, что динамично нужно - их к-во может быть разным = к-ву колонок...
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #3 : 25-01-2010 10:30 » 

как-то так
создание объектов типа Label на основании информации в первой строке

Private Sub UserForm_Activate()
    Dim r As Range
    Dim o As Object
   
    For Each r In ThisWorkbook.Worksheets(1).Rows(1).Cells
        If r.Value <> "" Then
            Set o = Me.Controls.Add("Forms.Label.1")
            o.Caption = r.Value
        End If
    Next
End Sub
НО

надо учитывать:
1) очищать форму от предыдущих Label (а то еще будут плодится, надо проверить)
2) изменять их положение, а то они будут располагатся один над другим
3) а точно оно так надо?

Записан

I Have Nine Lives You Have One Only
THINK!
klaus
Участник

ua
Offline Offline

« Ответ #4 : 25-01-2010 11:13 » 

Точно ли так надо...думаю да...
Мне собственно нужен автофильтр по колонкам таблицы (количество колонок разное, посему - все нужно динамично), и сделать это програмно, чтобы работало через форму, в которой есть ComboBox-ы с условиями для фильтра для каждой колонки. Рядом с каждым ComboBox нужно пристроить название поля, в виде Label, наверное, из-за динамичности прописать все "жестко" нельзя. Кроме того еще нужно чтобы первые две колонки из фильтрации упустить (по ним фильтровать не нужно).
В идеале, результат должен быть такой: - выбираю значение нужного мне поля, жму кнопку, и отфильтрованные по выбранному значению строки помещаются в новый файл на сохранение.
Записан
klaus
Участник

ua
Offline Offline

« Ответ #5 : 26-01-2010 14:23 » 

Ваш пример возвращает значение только последнего поля... но суть понятна, спасибо.
Покрутил, подумал, и ... можно улучшить алгоритм для получения того же результата (так красивше будет)
Нужно, чтобы в форме было всего 2 ComboBox: в первом выбираем название поля (по сути выбираем колонку= первую ее ячейку), а во втором формируется автофильтр именно по этой колонке. Выбрав значение из второго ComboBox - получаем все строки с этим значением...
Но это кажись сложнее воплотить...
« Последнее редактирование: 28-01-2010 10:19 от klaus » Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #6 : 26-01-2010 18:29 » 

Ваш пример возвращает значение только последнего поля... но суть понятна, спасибо.

не последнего поля, а всех
я же писал
Цитата
2) изменять их положение, а то они будут располагатся один над другим
Вы просто последний и видете
если бы меняли положение (Top, Left), то видели бы все
Цитата
Нужно, чтобы в форме было всего 2 ComboBox: в первом выбираем название поля (по сути выбираем колонку= первую ее ячейку), а во втором формируется автофильтр именно по этой колонке. Выбрав значение из второй колонки - получаем все строки с этим значением...

достаточно интересная идея

и если продолжать, то можно попробовать использовать и TreeView.
Где ветки будут заполнятся значениями фильтра для столбцов интерактивно пользователем

P.S.: Просто часто в последнее время видел контрол, подобный TreeView,  с помощью которого на отчеты вешаются условия. Правда тот контрол, вроде как, только для НЕТ.

P.P.S.: реализация достаточно сложная, но будет интересно и познавательно
Записан

I Have Nine Lives You Have One Only
THINK!
klaus
Участник

ua
Offline Offline

« Ответ #7 : 28-01-2010 10:18 » 

Идея с TreeView сама по себе хороша, но... в моем случае слишком громоздкая штука получится - и на два листа не влезет.
Буду c  2-мя  ComboBox пробовать. Здесь была моя ладья...
Записан
HandKot
Молодой специалист

ru
Offline Offline

« Ответ #8 : 28-01-2010 14:28 » 

делайте с комбо
а потом на досуге можно и с треевью поигратся Улыбаюсь
Записан

I Have Nine Lives You Have One Only
THINK!
klaus
Участник

ua
Offline Offline

« Ответ #9 : 29-01-2010 13:05 » 

Если поработать над такой конструкцией:
Код:
Private Sub UserForm_Activate()
Set i = Sheets(1).Range("A1" & ":" & Sheets(1).Cells(1, 1).End(xlToRight).Address(0, 0))
For Each Cell In i
ComboBox1.AddItem Cell.Value
Next
End Sub
Private Sub ComboBox1_Change()
Col = ComboBox1.ListIndex + 1
Set i = Sheets(1).Range(Sheets(1).Cells(2, Col).Address(0, 0) & ":" & Sheets(1).Cells(2, Col).End(xlDown).Address(0, 0))
For Each Cell In i
ComboBox2.AddItem Cell.Value
Next
End Sub
Private Sub ComboBox2_Change()
Col = ComboBox1.ListIndex + 1
Set i = Sheets(1).Range(Sheets(1).Cells(2, Col).Address(0, 0) & ":" & Sheets(1).Cells(2, Col).End(xlDown).Address(0, 0))
For Each Cell In i
If (Cell.Value = ComboBox2.Text) Then
' ???
End If
Next
End Sub
1) в Sub ComboBox2 - как туда все-таки фильтр по выбраной колонке засунуть?
2) если я в ComboBox1 выбрал поле, - ComboBox2 заполняется уже по этой колонке, но если я передумал, и выбрал другое поле в ComboBox1 - ComboBox2 заполняется все равно по первому выбору, т. е., если повторно меняю значение ComboBox1 модулю нужно обнулить мозги, если не -  вставляю результат в новосозданую книгу.
« Последнее редактирование: 29-01-2010 14:13 от klaus » Записан
klaus
Участник

ua
Offline Offline

« Ответ #10 : 02-02-2010 13:29 » 

Спасибо, вопрос уже закрыт. Что, съел?
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines