0

我有一个名为 Form1 的表单。在 Form1 中,我有以下代码 -

Dim details As clsDetails

Set details = getDetials(1) ' This fails. It doesn't assign a value.

getDetails 函数在一个单独的模块中声明如下 -

Public Function getDetials(detailNumber As Integer) As clsDetails

    Dim details As clsDetails

    Select Case detailNumber
        Case "1"
            Debug.Print "Inside case1"

            Set details = getDetail1()

            Debug.Print details.comment ' This prints correctly.

    End Select

    Set getDetails = details

End Function

但是,当我执行上述代码时,尽管调用了 getDetails 函数并在其中正确打印了详细信息,但 Form1 中的 details 变量并没有被设置。如何纠正这种情况?

4

2 回答 2

4

你有Option Explicit定义关键字吗?

看起来你可能有错字。您的函数被调用getDetials,但您将结果设置为的变量是getDetails,因此未设置返回值。

我修正了错字,一切都按我的预期工作。使用Option Explicit关键字将捕获这些类型的错误。

于 2012-05-23T15:29:09.480 回答
1

我认为这可能是没有Option Explicit On的情况

检查表单顶部是否有 Option Explicit(实际上无处不在)

您的类型错误声明了函数getDetials,然后设置了一个调用getDetails新创建的类的对象,实际上是在创建一个新对象,并且根本没有设置函数返回。

插入 Option Explicit,你会发现它不会编译!

当您在任何地方添加 Option Explicit 时,请转到Tools> Options>Editor选项卡并勾选框Require variable declaration- 这将确保每次向项目添加新代码文件时都会添加它。

于 2012-05-23T15:31:07.800 回答