2017-02-02 4 views
0

Я хочу проверить, что все поля заполнены, и если поле [Состояние предмета] является «Завршено», то я хочу, чтобы флажок под названием [Predmet zaključan] был разблокирован.Из пространства стека - Ошибка времени выполнения '28'

Первая функция, которую я накладываю на каждое текстовое поле в событии изменения и вторую функцию в [Status predmeta] на событии изменения.

Когда я заполняю все поля и задаю [Status predmeta] на «Završeno», я получаю это «Из пространства стека» - ошибка времени выполнения «28» и когда я нажимаю debug. Он показывает мне строку, помеченную во втором funtion.

Функция проверки, если все поля не являются нулевыми (я устанавливаю в настройках, разрешает нулевую длину «Нет» для всех полей), если true, чем функция true, функция else - false.

Public Function provjerapolja() As Boolean 

If Not IsNull(Me.Naziv_tvrtke) And Not IsNull(Me.Ime_korisnika) And Not IsNull(Me.Prezime_korisnika) And Not IsNull(Me.Adresa_korisnika) And Not IsNull(Me.Telefon) And Not IsNull(Me.Mail) And Not IsNull(Me.Vrsta_uredaja) And Not IsNull(Me.Model) And Not IsNull(Me.Lokacija) And Not IsNull(Me.Datum_ugradnje) And Not IsNull(Me.Datum_dogovorenog_servisa) And Not IsNull(Me.Opis_kvara) And Not IsNull(Me.Napomene) And Not IsNull(Me.Nalog_dodijeljen) And Not IsNull(Me.Broj_radnih_sati) And Not IsNull(Me.Udaljenost) And Not IsNull(Me.Obavljeni_radovi) And Not IsNull(Me.Status_predmeta) And Not IsNull(Me.Otpremnica) And Not IsNull(Me.Broj_otpremnice) And Not IsNull(Me.Račun) Then 
provjerapolja = True 


    If provjerastanja = True Then 
    [Predmet zaključan].Locked = False 
     End If 
Else 
provjerapolja = False 

End If 
End Function 

Функция проверка, если [Status predmeta] отличается от "Završeno" и чем вызывающего provjerastanja

Public Function provjerastanja() As Boolean 

If [Status predmeta] <> "Završeno" Then 
provjerastanja = False 

ElseIf [Status predmeta] = "Završeno" Then 
provjerastanja = True 


    If provjerapolja = True Then <--- Debug showing this line as error 
    [Predmet zaključan].Locked = False 
    End If 


End If 
End Function 
+0

Похож на вечную петлю - вы вызываете проджераполя от функции provjerastanja, и называя provjerastanja из provjerapolja. – RyanL

ответ

0

Создайте переменные для размещения результатов ваших функций projerapolja и projverastanja, иначе вы будете постоянно называть другую функцию. Например.

Public Function provjerastanja() As Boolean 
Dim bProv as Boolean 

If [Status predmeta] <> "Završeno" Then 
provjerastanja = False 

ElseIf [Status predmeta] = "Završeno" Then 
provjerastanja = True 

    bProv=provjerapolja 
    If bProv = True Then <--- Debug showing this line as error 
    [Predmet zaključan].Locked = False 
    End If 


End If 
End Function 
0

Прочитайте это, чтобы увидеть, что происходит: Debugging VBA Code

Вы создали бесконечный цикл (или рекурсия) с обеими функциями, вызывающими друг друга. Вам нужно пересмотреть свой подход.