2017-02-02 75 views
0

我想檢查所有字段是否填滿,如果字段[Status predmeta]是「Završeno」,那麼我想要複選框名爲[Predmetzaključan]解鎖。堆棧空間不足 - 運行時錯誤'28'

第一個函數我將每個文本框放在change事件中,並在[status predmeta]上放置第二個函數,用於更改事件。

當我填寫所有字段並將[Status predmeta]設置爲「Završeno」時,我得到「堆棧空間不足 - 運行時錯誤'28'」,當我單擊調試時它顯示第二個函數中標記的行。

函數檢查是否所有字段都不爲空(我在設置中允許所有字段的零長度爲「否」)如果爲真,則比函數爲true否則函數爲假。

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 

功能檢查,如果[狀態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調用provjerapolja,並從provjerapolja調用provjerastanja。 – 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

您已經創建了一個無限循環(或遞歸),兩個函數互相調用。你需要重新思考你的方法。