Такой вопрос:
Есть у меня текстовое поле. К нему прописан следующий обработчик:
- Код: Выделить всё
Private Sub txtEdit_KeyDown(KeyCode As Integer, Shift As Integer)
Dim bCancel As Boolean
Dim iIndex As Integer
Dim strQuery As String
Dim sDate As String
Dim strError As String
On Error GoTo CatchError
If KeyCode = vbKeyReturn Then
KeyCode = 0
strError = "22-1"
bCancel = False
'BC2 = False
strError = "22-2a"
txtEdit_Validate bCancel
strError = "22-3"
If bCancel = True Then Exit Sub
strError = "23"
end if
finish:
Exit Sub
CatchError:
MsgBox "TXTEDIT_KEYDOWN_ERR " + err.Description + " AddInfo=" + strError
GoTo finish
End Sub
Private Sub txtEdit_Validate(ByRef Cancel As Boolean)
On Error GoTo CatchError
' Мой суперкод
finish:
Exit Sub
CatchError:
MsgBox "TXTEDIT_VALIDATE_ERR " + err.Description + " AddInfo=" + strError + vbCrLf + rsInv.Filter
GoTo finish
Часть кода я, конечно, поскипал...
При запуске в некоторых случаях программа валится с кодом 22-2а (strError) и ошибкой " 13 - Type Mismatch".
Как я понимаю, если бы мисматч был в коде валидейта, то сработал бы его OnError. Более того, в методе KeyDown я отключал обработчик ошибок - прогу тогда просто выбивало.
Похоже, ошибка в самой строке txtEdit_Validate bCancel.
Т.к. это ActiveX Exe, то я не могу (а скорее - не умею) подключиться отладчиком и посмотреть - что же валит прогу.
Может, кто-нибудь сталкивался с чем-нибудь подобным?