编译错误:Sub或Function没有在vba中定义

我有一个三个button的用户窗体。 当点击确定button时,我写下面的代码:

Private Sub CommandButton2_Click() Call calculateCost End Sub 

我在Sheet1中写的子方法是:

 Public Sub calculateCost() Dim kilo As String kilo = Worksheets("Sheet1").TextBox1.Text MsgBox "value" & kilo End Sub 

当即时通讯运行代码即时获取错误。 在调用calculateCost附近未定义的子或函数。 为什么发生这种情况? 如何解决这个问题。 谢谢

将您的calculateCost过程移动到标准模块(插入 – VBE中的模块)。 类模块中的过程(包括图纸类模块)不能像这样调用。 您可以通过其他方式从表单的类模块中调用它,但是在您的过程中没有看到任何需要表单模块的内容,因此它可能属于标准模块。