堆栈外 space - 运行 时间错误 '28'

Out of stack space - Run time error '28'

我想检查是否所有字段都已填写,如果字段 [Status predmeta] 是 "Završeno",那么我想解锁名为 [Predmet zaključan] 的复选框。

第一个函数我放在更改事件中的每个文本框上,第二个函数放在更改事件的 [Status predmeta] 上。

当我填写所有字段并将 [Status predmeta] 设置为 "Završeno" 时,我得到了 "Out of stack space - Run time error '28'",当我单击调试时,它显示了第二个功能中标记的行。

函数检查是否所有字段都不为空(我在设置中将所有字段的长度设置为 "No")如果为真则函数为真,否则函数为假。

    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

阅读这篇文章看看会发生什么:Debugging VBA Code

您创建了一个无限循环(或递归),两个函数相互调用。你需要重新考虑你的方法。

创建变量来存放函数 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