在 VBA 中调用类函数时出错
Posted
技术标签:
【中文标题】在 VBA 中调用类函数时出错【英文标题】:Error calling class function in VBA 【发布时间】:2018-04-12 13:58:15 【问题描述】:我的 Access 数据库中有这个类模块:
Option Compare Database
Public Event BeforeCalc()
Public Sub Calculate(ByVal i As Integer, ByVal y As Integer)
RaiseEvent BeforeCalc
Calculate = i + y
End Sub
Private Sub Class_Initialize()
Debug.Print "Inside construcotr"
End Sub
然后,在自定义表单中:
Option Compare Database
Private WithEvents math As MyMath
Private Sub btnCalculate_Click()
Dim result As Integer
Set result = math.Calculate(CInt(txtI.Text), CInt(txtY.Text))
End Sub
Private Sub Form_Load()
Set math = New MyMath
End Sub
Private Sub math_BeforeCalc()
MsgBox "About to Calc!", vbInformation
End Sub
当我单击表单按钮 btnCalculate 时,我在 math.Calculate 处收到此错误:
“编译错误。预期的函数或变量。”
我的代码有什么问题?
【问题讨论】:
请注意,.Text
是错误的使用属性(它仅在控件具有焦点时有效)。请改用.Value
。
@Andre 好点,谢谢!
【参考方案1】:
因为它是一个函数,所以它应该返回一些东西,在你的情况下是一个整数,你也应该指定 Function 关键字。
替换代码:
Public Sub Calculate(ByVal i As Integer, ByVal y As Integer)
RaiseEvent BeforeCalc
Calculate = i + y
End Sub
与:
Public Function Calculate(ByVal i As Integer, ByVal y As Integer) as Integer
RaiseEvent BeforeCalc
Calculate = i + y
End Sub
【讨论】:
【参考方案2】:您已将Calculate 定义为Sub,尝试将其定义为Function:
Public Function Calculate(ByVal i As Integer, ByVal y As Integer) as Integer
RaiseEvent BeforeCalc
Calculate = i + y
End Function
另外,不要set
结果:
Private Sub btnCalculate_Click()
Dim result As Integer
result = math.Calculate(CInt(txtI.Text), CInt(txtY.Text))
End Sub
【讨论】:
以上是关于在 VBA 中调用类函数时出错的主要内容,如果未能解决你的问题,请参考以下文章