Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Microsoft Office и VBA программирование > Microsoft Office Excel
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2010, 00:07   #1
DimR
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 18
По умолчанию Список

Цитата:
Sub ListBoxes()

Dim str(5) As String, strInfo(5) As String, surn(5) As Boolean
Dim i As Byte, idCount As Byte
str(0) = "1"
str(1) = "2"
str(2) = "3"
str(3) = "4"
str(4) = "5"
str(5) = "6"

idCount = 0
UserForm2.ListBox1.Clear
UserForm1.ListBox1.Clear
UserForm1.ListBox1.Enabled = False
UserForm2.ListBox1.Enabled = True
With UserForm2.ListBox1
For i = 0 To 5
.AddItem str(i)
surn(i) = False
Next i
.ListIndex = 0
.MultiSelect = fmMultiSelectExtanded
End With

If UserForm2.ListBox1.ListCount > 0 Then
For i = 0 To UserForm2.ListBox1.ListCount - 1
surn(i) = UserForm2.ListBox1.Selected(i)
If surn(i) Then
strInfo(idCount) = str(i)
UserForm1.ListBox1.AddItem strInfo(idCount)
idCount = idCount + 1
End If
Next i
UserForm1.ListBox1.Enabled = False
UserForm2.ListBox1.Enabled = True
UserForm1.ListBox1.MultiSelect = fmMultiSelectExtanded
End If
End Sub
Не могу понять, почему на первой форме отображается первый элемент списка вне зависимости от того,что я выбираю.
DimR вне форума Ответить с цитированием
Старый 22.04.2010, 05:08   #2
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
почему на первой форме отображается первый элемент списка вне зависимости от того,что я выбираю.
Обратите внимание на фрагмент Вашего кода
Код:
For i = 0 To UserForm2.ListBox1.ListCount - 1
    surn(i) = UserForm2.ListBox1.Selected(i)
    If surn(i) Then
        strInfo(idCount) = str(i)
        UserForm1.ListBox1.AddItem strInfo(idCount)
        idCount = idCount + 1
    End If
Next i
Где строка surn(i) = UserForm2.ListBox1.Selected(i) присвоит значение элементу массива только в том случае, если переменная i совпадает с номером выбранного элемента в UserForm2.ListBox1. Этот элемент выбирается Вами ранее в строке
Код:
.ListIndex = 0
При всех других значениях переменной i, условие If surn(i) Then... выполняться не будет. Следовательно, UserForm1.ListBox1 будет содержать всего 1 значение.
Попробуйте 0 заменить на 1 или 2 и т.д. до значения UserForm2.ListBox1.ListCount - 1. В результате, в UserForm1.ListBox1 будет отображаться только 1 значение, определенное в строке .ListIndex = ... Не знаю, как Вам нужно, но Ваш код так написан.
Чем шире угол зрения, тем он тупее.

Последний раз редактировалось SAS888; 22.04.2010 в 05:11.
SAS888 вне форума Ответить с цитированием
Старый 22.04.2010, 08:52   #3
DimR
Пользователь
 
Регистрация: 19.11.2009
Сообщений: 18
По умолчанию

К сожалению,от замены чисел только хуже - пункты перестают отображаться вообще.F8 показывает ошибку в цикле, которую неизвестно как исправить...
DimR вне форума Ответить с цитированием
Старый 22.04.2010, 09:44   #4
SAS888
Старожил
 
Аватар для SAS888
 
Регистрация: 05.12.2007
Сообщений: 4,180
По умолчанию

Цитата:
К сожалению,от замены чисел только хуже - пункты перестают отображаться вообще.F8 показывает ошибку в цикле, которую неизвестно как исправить...
Я создал 2 формы с LisnBox-ами, выполнил Ваш код, попробовал поизменять значение в строке .ListIndex = 0, получил результат о котором написал. Ошибок нет (хотите пример файла?). Ищите их в другом месте.

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

Последний раз редактировалось SAS888; 22.04.2010 в 09:50.
SAS888 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Список на Си Annenen Помощь студентам 21 20.12.2010 18:54
список maner0k Паскаль, Turbo Pascal, PascalABC.NET 3 16.06.2009 23:55
C++. Односвязный список. Уничтожить список Olya90 Помощь студентам 2 10.06.2009 18:52
Данные-проверка-список (список на другом листе) Inbox Microsoft Office Excel 7 26.12.2008 01:43