我想检查所有字段是否已填满,如果字段[Status predmeta]是“Završeno”,那么我想要解锁名为[Predmetzaključan]的复选框。
我在变更事件中放置了每个文本框的第一个函数,在变更事件上放置了[状态预测]的第二个函数。
当我填写所有字段并将[Status predmeta]设置为“Završeno”时,我得到“堆栈空间不足 - 运行时错误'28'”,当我点击调试它显示我在第二个功能中标记的行。
函数检查是否所有字段都不为空(我在设置中设置允许所有字段的长度为“否”)如果为true,则函数为true,否则函数为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
功能检查[状态预测]是否与“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 :(得分:0)
阅读本文以了解会发生什么:Debugging VBA Code
你创建了一个无限循环(或递归),两个函数互相调用。你需要重新思考你的方法。
答案 1 :(得分:0)
创建变量来存放函数projerapolja和projverastanja的结果,否则你将永远调用另一个函数。 E.g。
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