Страницы: 1
RSS
Продолжение работы формы при ошибке и фокусировке на листбоксе
 
День добрый!

Возникла проблема, не могу понять даже под каким соусом искать в инете.

Есть Listbox в Userform в котором пользователи должны выбирать определенное значение. После выбора значения в выпадающем списке, пользователь может посмотреть сколько вхождений данного типа есть в столбике (базе) и в какой строке первое вхождение данного типа. Проблема когда пользователь нажимает на кнопку проверки не выбрав значение в списке. Тогда выскакивает ошибка и работа формы останавливается.
Хотел сделать защиту от этого... Что то не получается(((
Код
Private Sub CheckNum_Click()
    
    If Me.TypeList.Text = "" Then
' Если в списке ничего не выбрано (пусто)
        MsgBox "Введите тип"
' Появляется сообщение. После нажатия на ОК курсор перемещается в окно выпадающего списка. 
    Exit Sub        
    End If

    TypeList.Focus

    Dim iType As Integer
    Dim iMatch As Integer
        iType = Application.WorksheetFunction.CountIf(Range("A:A"), TypeList.Value)
        iMatch = Application.WorksheetFunction.Match(TypeList.Value, Range("A:A"))
    
    MsgBox iType & "*" & iMatch

End Sub
Если в выпадающем списке выбрано значение - все работает. Если не выбрано - сообщение "Введите тип" появляется, но после нажатия на ОК выскакивает сообщение об ошибке
"Compile Error: Method or data member not found"

Если убираю TypeList.Focus - все работает, только курсор не возвращается в выпадающий список
Изменено: Павел - 15.04.2016 13:26:08
 
А что мешает выполнить проверку выбора пользователем значения в списке? Если значение не выбрано - завершение процедуры.
Файл с примером выложите.
 
Цитата
Павел написал:
TypeList.Focus
Это откуда такая команда?

Может
Код
TypeList.SetFocus
правильнее будет?
 
Цитата
Павел написал: только курсор не возвращается в выпадающий список
Потому что до этого был EXIT SUB, чему вы удивляетесь?

Цитата
Павел написал: Если убираю TypeList.Focus - все работает
Причину я уже озвучил выше.
 
Апострофф, Спасибо за помощь!

Эммм... что то я сам ступил... Сказывается то, что с VBA начал осваивать недавно и все еще слишком редко использую(((

Код
Private Sub CheckNum_Click()
If Me.TypeList.Text = "" Then
    MsgBox "Укажите тип"
    TypeList.SetFocus
If Me.TypeList <> "" Then
    Dim iType As Integer
    Dim iMatch As Integer
    iType = Application.WorksheetFunction.CountIf(Range("A:A"), TypeList.Value)
    iMatch = Application.WorksheetFunction.Match(TypeList.Value, Range("A:A"))
    MsgBox iType & "*" & iMatch
End If
End If

Изменено: Павел - 15.04.2016 14:24:00
 
Павел, код Ваш опять нерабочий, судя по всему?
Код
Private Sub CheckNum_Click()
If Me.TypeList.Text = "" Then
    MsgBox "Укажите тип"
    TypeList.SetFocus
    EXIT SUB
ENDIF
'If Me.TypeList <> "" Then
    Dim iType As Integer
    Dim iMatch As Integer
    iType = Application.WorksheetFunction.CountIf(Range("A:A"), TypeList.Value)
    iMatch = Application.WorksheetFunction.Match(TypeList.Value, Range("A:A"))
    MsgBox iType & "*" & iMatch
'End If
'End If
END SUB
 
Апострофф, было чуток)))

вот такой работает
Код
Private Sub CheckNum_Click()
If Me.TypeList.Text = "" Then
    MsgBox "Укажите тип"
    TypeList.SetFocus
End If

If Me.TypeList <> "" Then
    Dim iType As Integer
    Dim iMatch As Integer
    iType = Application.WorksheetFunction.CountIf(Sheets("ÐåöÌàø").Range("A:A"), TypeList.Value)
    iMatch = Application.WorksheetFunction.Match(TypeList.Value, Sheets("ÐåöÌàø").Range("A:A"))
    MsgBox iType & "*" & iMatch
End If

End Sub
Изменено: Павел - 15.04.2016 14:38:39
Страницы: 1
Наверх