UserForm - ListBox

Программирование на Visual Basic for Applications
Cyberax
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 13.09.2006 (Ср) 8:31
Откуда: Тюмень, Россия

UserForm - ListBox

Сообщение Cyberax » 25.09.2006 (Пн) 12:50

Короче програмка выглядит так (образно)

For each s in ListBox1.List()
If s = ListBox1.Value Then
Load s
s.Show
End if
Next s

Так вот мне надо чтобы она работала, а она не работает. Подскажите кто-нибудь если я понятно излагаю свою мысль. Спасибо.

RayShade
Scarmarked
Scarmarked
Аватара пользователя
 
Сообщения: 5511
Зарегистрирован: 02.12.2002 (Пн) 17:11
Откуда: Russia, Saint-Petersburg

Сообщение RayShade » 25.09.2006 (Пн) 14:28

Не. Не понятнто совсем, что хочется делать. Если в листе список форм, и надо показать выбранную - то, это просто UserForms(List1.ListIndex).Show



А если что то еще - то тогда пиши по русски :)

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 25.09.2006 (Пн) 14:34

Может вот так:


Код: Выделить всё
Private Sub ListBox1_Click()
    Dim UF As Object
    Set UF = VBA.UserForms.Add(ListBox1.Value)
    UF.Show
End Sub
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 25.09.2006 (Пн) 14:43

RayShade писал(а):... то, это просто UserForms(List1.ListIndex).Show...

Если речь об Excel, то совет RayShade не сработает, т.к. UserForms это коллекция загруженных UserForm. Перед тем как ее вызывать придется загружать все UserForms (Load UserForm1: Load UserForm2: Load UserForm3 ...), а это заколдованный круг :-) И не все так происто с порядком ListIndex и индексами загруженных UserForm.
Привет,
KL

Cyberax
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 13.09.2006 (Ср) 8:31
Откуда: Тюмень, Россия

Сообщение Cyberax » 26.09.2006 (Вт) 6:07

Начнем сначала
У мнея есть некоторый список ABC, ABD, ABF. UserForm переиминованы под этот список (ABC, ABD, ABF). Когда значение s (в программе) совпадает с выбранным значением из ListBox должна загружаться соответствующая UserForm'a.

$€rg
Обычный пользователь
Обычный пользователь
 
Сообщения: 99
Зарегистрирован: 11.01.2006 (Ср) 10:15
Откуда: Санкт-Петербург

Сообщение $€rg » 26.09.2006 (Вт) 13:38

а что мешает загрузить все формы в нужном порядке АВС первой индекс=0 АВД второй индекс равен 1 и т. д. и по индексу из списка выбирать RayShade пример привел
процесс печатания программного кода укрепляет моральные устои С. Каммингс VBA4Dummies
:study:

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.09.2006 (Вт) 13:59

Cyberax писал(а):Начнем сначала
У мнея есть некоторый список ABC, ABD, ABF. UserForm переиминованы под этот список (ABC, ABD, ABF). Когда значение s (в программе) совпадает с выбранным значением из ListBox должна загружаться соответствующая UserForm'a.


Может лучше почитаешь все сначала. Тебе было предложено 2 решения. Прилагаю пример моего.
Вложения
Книга1.xls
(45 Кб) Скачиваний: 76
Привет,
KL

KL
Microsoft MVP
 
Сообщения: 483
Зарегистрирован: 30.10.2005 (Вс) 0:31
Откуда: Madrid

Сообщение KL » 26.09.2006 (Вт) 14:15

$€rg писал(а):а что мешает загрузить все формы в нужном порядке АВС первой индекс=0 АВД второй индекс равен 1 и т. д. и по индексу из списка выбирать RayShade пример привел


Все равно придется использовать названия листов при загрузке

Код: Выделить всё
Load UserForm1
Load UserForm2
Load UserForm3
UserForms(ListBox1.Index).Show


но тогда зачем огород городить

Код: Выделить всё
select case ListBox1.Index
case 0: UserForm1.Show
case 1: UserForm2.Show
case 2: UserForm3.Show
End Select
Привет,
KL

Cyberax
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 12
Зарегистрирован: 13.09.2006 (Ср) 8:31
Откуда: Тюмень, Россия

Сообщение Cyberax » 27.09.2006 (Ср) 5:43

Спасибо всем за помощь я уже разобрался.


Вернуться в VBA

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 13

    TopList