Модераторы: mihanik
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Как создать массив обьектов на форме, Excel 
V
    Опции темы
Edd
Дата 1.4.2007, 14:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



Нужно создать массив обьектов Label и ComboBox на форме. В Label и ComboBox будет записываться и считываться информация. Изначально количество элементов не известно.

Пробовал как в VB6, когда один элемент уже присутствует и просто добавляем по индексу.

Код

For n = 1 To k-1
        Load Label1(n)
        Load ComboBox1(n)
       ....' обработка
Next n


Но, чтото я не обнаружил индексов у обьектов.
Мозет данную проблему мозно решить другим способом?
PM MAIL   Вверх
bilya
Дата 1.4.2007, 15:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 112
Регистрация: 3.1.2007

Репутация: 1
Всего: 1



Держите http://www.vbnet.ru/forum/show.aspx?id=135049, смотрите ответ №13 за моим авторством.  smile 
Ну еще это: http://www.dimit.pochta.ru/wopr.html

Это сообщение отредактировал(а) bilya - 1.4.2007, 15:12
PM MAIL   Вверх
Edd
Дата 1.4.2007, 18:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



К сожалению это не то, что я хотел, хотя информация тоже полезная и пригодится.
Мне надо на UserForm создать кучу Label и ComboBox.
Что бы в ручную их нелепить, решил создать их массив (что в VBA не реализовано VB методом)
Как мне это сделать? Что писать в Class1  и Private Sub UserForm_Initialize()

Мозет необезательно массив. Мозет просто програмно создавать Label1, Label2 ... LabelN и аналогично с CombBox-ами, а потом их уже обрабатывать?
PM MAIL   Вверх
Дмит
Дата 1.4.2007, 22:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 117
Регистрация: 21.4.2006
Где: г.Волгоград

Репутация: 8
Всего: 9



См. файл

Присоединённый файл ( Кол-во скачиваний: 45 )
Присоединённый файл  cmb_frm.zip 14,07 Kb
PM MAIL WWW   Вверх
mihanik
Дата 2.4.2007, 07:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


-=Белый Медведь=-
****


Профиль
Группа: Комодератор
Сообщений: 4054
Регистрация: 24.4.2006
Где: г. Тверь

Репутация: 9
Всего: 109



Дмит!!!

Классно!!!
Мне очень понравилось!!!

Напиши по этому методу добавления контролов на форму статью.
Разместим в FAQ!!!

Давно я не встречал Class-ное программирование при размещении на форме элементов управления...



--------------------
Программистами не рождаются, - это родовая травма...
user posted imageuser posted image
PM MAIL WWW ICQ   Вверх
Edd
Дата 4.4.2007, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



С ComboBox всё хорошо, создаются, размещаются, заполняются, и информация с них берётся.
Пытаюсь создать аналогичным методом Label-ы, но не получается.
Создал Class2
Код

Public WithEvents lbl As MSForms.Label
Private MyIndex As Integer

Public Property Let Item(NewCtrl As MSForms.Label)
    Set lbl = NewCtrl
End Property

Public Property Let Index(NewIndex As Integer)
    MyIndex = NewIndex
End Property

Public Property Get Item() As MSForms.Label
    Set Item = lbl
End Property

Public Property Get Index() As Integer
    Index = MyIndex
End Property

В модуле добавил
Код

Public MassivL() As New Class2

и в форме после создания ComboBox, сразу
Код

Dim lb As Label
For i = 0 To 5
    Set lb = UserForm1.Controls.Add("Forms.Label.1") 'вот тут вот ругается ("Type mismatch")

    With lb
        .Caption = "fdfdf"
        .Left = 10
        .Top = i * 30 + 20
        .Visible = True
    End With
    ReDim Preserve MassivL(i)
    With MassivL(i)
        .Item = lb
        .Index = i
    End With
Next

Где проблема?

Пытался создать только Label-ы, отдельно на другой форме.
Проблема таже : Set lb = UserForm4.Controls.Add("Forms.Label.1")
"Forms.Label.1" надо заменить на другой текст

Это сообщение отредактировал(а) Edd - 4.4.2007, 17:09
PM MAIL   Вверх
shovkoplyas
Дата 4.4.2007, 19:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 24.3.2006
Где: Украина, г.Северо донецк

Репутация: 3
Всего: 3



Код

Dim lb as control

PM MAIL WWW   Вверх
Edd
Дата 5.4.2007, 08:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 200
Регистрация: 23.3.2006

Репутация: нет
Всего: 1



 smile Всё работает, спасибо.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование, связанное с MS Office"
mihanik staruha

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами



  • Несанкционированная реклама на форуме запрещена
  • Пожалуйста, давайте своим темам осмысленный, информативный заголовок. Вопль "Помогите!" таковым не является.
  • Чем полнее и яснее Вы изложите проблему, тем быстрее мы её решим.
  • Оставляйте свои записи в "Книге отзывов о работе администрации"
  • А вот тут лежит FAQ нашего подраздела


Если Вам понравилась атмосфера форума, заходите к нам чаще!
С уважением mihanik и staruha.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование, связанное с MS Office | Следующая тема »


 




[ Время генерации скрипта: 0.0454 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.