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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.12.2015, 12:54   #1
Kerajel
Пользователь
 
Регистрация: 21.10.2012
Сообщений: 10
По умолчанию Выбор из ListBox работает через раз

Добрый вечер

Предполагается, что кликнув на любую ячейку столбца D появится список, из которого можно сделать выбор, и выбранное значение вставится в ячейку столбца D. После этого ListBox21.Visible = False. При этом если выделено 2 и более ячеек, листбокс не появляется.

Проблема в том, что данная операция срабатывает не всегда - почему-то иногда после клика на значение из списка выделение ячейки пропадает, а ListBox остается видимым, при этом сделать выбор не получается.

Подскажите, пожалуйста, в чём может быть проблема?
Вложения
Тип файла: zip Упражнения.zip (24.3 Кб, 7 просмотров)
Kerajel вне форума Ответить с цитированием
Старый 08.12.2015, 14:28   #2
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

Так пробовал?
Код:
Private Sub ListBox21_Click()
Dim i As Long, v, s As String
v = ListBox21.List
For i = LBound(v, 1) To UBound(v, 1)
    If ListBox21.Selected(i) Then s = s & v(i, 0) & "; "
Next
s = Left(s, Len(s) - 2)
ActiveCell = s
ListBox21.ListIndex = -1
ListBox21.Visible = False
End SubPrivate Sub ListBox21_Click()
Dim i As Long, v, s As String
v = ListBox21.List
For i = LBound(v, 1) To UBound(v, 1)
    If ListBox21.Selected(i) Then s = s & v(i, 0) & "; "
Next
s = Left(s, Len(s) - 2)
ActiveCell = s
ListBox21.ListIndex = -1
ListBox21.Visible = False
End Sub
в чем глубокий смысл структуры:
Код:
For i = LBound(v, 1) To UBound(v, 1)
    If ListBox21.Selected(i) Then s = s & v(i, 0) & "; "
Next
s = Left(s, Len(s) - 2)
?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 08.12.2015, 17:27   #3
Kerajel
Пользователь
 
Регистрация: 21.10.2012
Сообщений: 10
По умолчанию

Вставил Ваш код, проблема осталась

за что отвечает код
Код:
For i = LBound(v, 1) To UBound(v, 1)
    If ListBox21.Selected(i) Then s = s & v(i, 0) & "; "
Next
s = Left(s, Len(s) - 2)
не могу сказать, макрос в своём файле я склеил из двух других похожих сабов, но сказать зачем он нужен, знаний уже не хватает
Kerajel вне форума Ответить с цитированием
Старый 08.12.2015, 18:43   #4
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

процедуру change отключили(закомментили)?
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Старый 08.12.2015, 19:03   #5
Kerajel
Пользователь
 
Регистрация: 21.10.2012
Сообщений: 10
По умолчанию

Цитата:
Сообщение от Aleksandr H. Посмотреть сообщение
процедуру change отключили(закомментили)?
Код:
Private Sub Worksheet_SelectionChange(ByVal Target As Excel.Range)
Dim lCellsCount As Long
lCellsCount = Selection.Count
If Target.Column = 4 And lCellsCount = 1 Then
ActiveCell = ClearContents
With ListBox21
.Visible = True
.Left = Target(1, 1).Left
.Top = Target(1, 1).Top
End With
Else
ListBox21.Visible = False
End If
If IsEmpty(ActiveCell) = False Then
ListBox21.Visible = False
End If
End Sub

Private Sub ListBox21_Click()
Dim i As Long, v, s As String
v = ListBox21.List
For i = LBound(v, 1) To UBound(v, 1)
    If ListBox21.Selected(i) Then s = s & v(i, 0) & "; "
Next
s = Left(s, Len(s) - 2)
ActiveCell = s
ListBox21.ListIndex = -1
ListBox21.Visible = False
End Sub
В настоящий момент код такой, какую процедуру нужно убрать?
Kerajel вне форума Ответить с цитированием
Старый 08.12.2015, 20:33   #6
Aleksandr H.
2 the Nation Glory
Старожил
 
Аватар для Aleksandr H.
 
Регистрация: 27.05.2014
Сообщений: 3,289
По умолчанию

имхо, так и должно быть. Больше вариантов не имею
Кто умер, но не забыт, тот бессмертен.
Лао-Цзы.
Aleksandr H. вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
обнаружение зяпятых и точек, работает через раз HellMercenariess Общие вопросы Delphi 3 15.06.2014 19:07
Что-то похожее на игру но работает через раз.(c++) DimDimich Помощь студентам 3 11.02.2014 03:28
Поток работает через раз D_E_N Общие вопросы Delphi 0 14.08.2013 10:31
Не работает выбор ОС через клавиатуру в "диспетчере Загрузок ОС" Ecosasha Компьютерное железо 6 30.10.2011 01:03
Паскаль программа работает через раз malohacker Помощь студентам 2 05.01.2011 15:27