Как правильно обработать ошибку о невозможности потери фокуса

George-III
Дата: 09.11.2009 16:43:09
Есть некая функция, которая вызывается при нажатии на кнопку или надпись, на время выполнения этой функции кнопку надо блокировать.
Делаю так:
strAForm = Screen.ActiveForm.Name
    'Отбрасываем ситуацию, когда вызов текущей функции осуществляется так, что блокировать ЭУ нельзя, например вызов производится из кода
    Dim flgDsbl As Boolean
    flgDsbl = True
    If frmName = frmNameP Then
        If Not IsMissing(frmNameIn) Then
           If frmName = CStr(frmNameIn) Then flgDsbl = False
        End If
    End If
    If flgDsbl Then
        If Screen.ActiveControl.Name <> "" Then
            'Переводим фокус ввода и блокируем элемент управления
            strActiveControl = Screen.ActiveControl.Name
            SendKeys "({Tab})", True
            Forms(strAForm).Controls(strActiveControl).Enabled = False
            flgACEnabled = True
            'Теперь на кнопку фокус ввода установить нельзя, так что теперь можно смело выставлять Enabled=True не опасаясь получится в фокусе
        End If
    End If
Но проблема в том, что на форме в этой области может быть всего одна лишь кнопка или надпись и перевести фокус по табу не на что, соответственно фокус остается на этой кнопке и вываливается ошибка. Форм очень много, больше 100, проверять все вручную и добавлять скрытые контролы затруднительно, как можно обработать ошибку невозможности Forms(strAForm).Controls(strActiveControl).Enabled = False и выставить флаг в flgACEnabled = false
??
George-III
Дата: 09.11.2009 17:08:15
Всем спасибо решение найдено!
If flgDsbl Then
        If Screen.ActiveControl.Name <> "" Then
            'Переводим фокус ввода и блокируем элемент управления
            strActiveControl = Screen.ActiveControl.Name
            SendKeys "({Tab})", True
            If Screen.ActiveControl.Name <> strActiveControl Then
               Forms(strAForm).Controls(strActiveControl).Enabled = False
               flgACEnabled = True
            End If
            'Теперь на кнопку фокус ввода установить нельзя, так что теперь можно смело выставлять Enabled=True не опасаясь получится в фокусе
        End If
    End If