Обработка ошибок в классе возвращает ошибку времени выполнения 440 «Ошибка автоматизации» - PullRequest
0 голосов
/ 12 января 2020

У меня есть класс ClsSubject со свойством let INN. Свойство проверяет, является ли входящий аргумент числовой строкой c и имеет длину 10 символов. В противном случае выдается ошибка.

Property Let INN(val As String)
    If IsNumeric(val) And Len(val) = 10 Then
        PINN = val
    Else
        Dim errorMessage As String
        errorMessage = val & " is an Invalid value"
        Err.Raise vbObjectError + 513, "ClsSubject", errorMessage
    End If
End Property

Когда я пытаюсь смоделировать ошибку, я получаю только

Ошибка времени выполнения '440': Ошибка автоматизации.

Что я делаю не так?

1 Ответ

0 голосов
/ 12 января 2020

Используя код из ОП, работает следующее. В модуле:

Sub TestMe()

    Dim x As New clsSubject
    x.INN = 3276132761#
    Debug.Print x.PINN

End Sub

И это в классе:

Public PINN As String

Property Let INN(val As String)
    If IsNumeric(val) And Len(val) = 10 Then
        PINN = val
    Else
        Dim errorMessage As String
        errorMessage = val & " is an Invalid value"

        Err.Raise vbObjectError + 513, "ClsSubject", errorMessage
    End If
End Property

Чтобы запустить код, позвоните TestMe().

В общем В этом случае поля класса должны быть закрытыми и доступны через свойства publi c. Например, private PINN as String, но это только для иллюстрации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...