1

Я вставил контроль формы; ListBox с множественным выбором. Но я хочу ограничить количество выборов до 3.

Если пользователь пытается выбрать более трех, он должен отменить выбор того, который пользователь пытался выбрать. Также должен появиться MsgBox, уведомляющий пользователя о том, что максимальное количество выборок равно 3.

Я попытался найти ответ на этот вопрос и попытался найти фрагменты кода, найденные в Интернете, но они не увенчались успехом.

Я пробовал этот код:

Private Sub ListBox2_Change()
Dim iInd%
Dim i As Integer, Cnt As Integer
Cnt = 0
iInd = ListBox2.ListIndex
For i = 0 To ListBox2.ListCount - 1
If ListBox2.Selected(i) = True Then
Cnt = Cnt + 1
End If
Next i
If Cnt > 2 Then
ListBox2.Selected(iInd) = False
MsgBox "Only 2 types can be selected"
End If
End Sub

Источник

Но VBA возвращает «Ошибка времени выполнения 424: требуется объект» и выделяет 5. строку.

Я новичок в VBA, и у меня нет большого опыта его использования.

Почему приведенный выше код не работает, и как я могу решить мою проблему?

1 ответ1

1

Вам нужно использовать список ActiveX вместо элемента формы. Элементы управления ActiveX намного лучше для такого рода вещей, потому что они предназначены для использования в сценариях VBA.

Active X List Box

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .