简体   繁体   English

堆栈空间不足-运行时错误'28'

[英]Out of stack space - Run time error '28'

I want to check that all fields are filled and if field [Status predmeta] is "Završeno" then I want to have checkbox called [Predmet zaključan] to be unlocked. 我想检查所有字段是否都已填写,并且如果[Status predmeta]字段为“Završeno”,那么我想将名为[Predmetzaključan]的复选框解锁。

First function I put on every textbox in change event and second function on [Status predmeta] on change event. 第一个功能是在更改事件中放在每个文本框上,第二个功能是在更改事件中放在[Status predmeta]上。

When I fill all fields and set [Status predmeta] to "Završeno" I get that "Out of stack space - Run time error '28'" and when I click debug It shows me line marked in second funtion. 当我填写所有字段并将[Status predmeta]设置为“Završeno”时,我会得到“堆栈空间不足-运行时错误'28'”,并且当我单击debug时,它向我显示了第二个功能标记的行。

Function checking if all fields are not null (I set in settings allow zero length to "No" for all fields) if true than function is true else function is false. 函数检查是否所有字段都不为空(我在设置中设置的所有字段都允许零长度为“ No”),如果true大于function true,否则function为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

Function checking if [Status predmeta] is different than "Završeno" and than calling provjerastanja 函数检查[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

Read this to see what happens: Debugging VBA Code 阅读本文以了解会发生什么: 调试VBA代码

You have created an infinite loop (or recursion) with both functions calling each other. 您已经创建了一个无限循环(或递归),两个函数相互调用。 You need to rethink your approach. 您需要重新考虑您的方法。

Create variables to house the results of your functions projerapolja and projverastanja, otherwise you'll perpetually call another function. 创建变量以容纳函数projerapolja和projverastanja的结果,否则,您将永久调用另一个函数。 Eg 例如

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM