1

我在我的一个工作表模块中声明了一个公共函数:

Public Function isValidContract(contract As String) As Boolean
    ' Code reads cell values from the worksheet and determines
    ' if passed-in contract is one of them.
End Function

我希望能够从其他模块和类模块访问它。我尝试了以下方法:

Public Sub someRandomSubInAntoherModule()

    Dim contract As String
    Dim sh as Worksheet

    ' Code that sets contract
    Set sh = Sheets("Matrix")
    If Not sh.isValidContract(contract) Then
        ' blah
    End If

End Sub

但是我得到一个编译错误:“找不到方法或数据成员”,可能是因为我声明shWorksheet对象,而Worksheet对象没有isValidContract()方法。但我想使用矩阵isValidContract()工作表中定义的方法。

我可以让它工作的唯一方法是声明shObject。但是当我键入时,我没有得到漂亮的小代码提示

sh.

有什么方法可以确定尺寸sh以便我获得 Worksheet 对象的代码提示我的特定矩阵代码?

4

1 回答 1

2

好的 - 所以我刚刚想通了。

将工作表的“Excel 名称”更改为有意义的内容......在这种情况下,我通过编辑其属性将Sheet1重命名为MatrixSheet 。

然后在客户端代码中:

Public Sub someRandomSubInAntoherModule()

    Dim contract As String
    Dim sh as MatrixSheet

    Set sh = Sheets("Matrix")

    ' Code that sets contract
    If Not sh.isValidContract(contract) Then
        ' blah
    End If

End Sub

它编译,我得到代码提示,这很棒。

于 2015-11-03T16:07:48.247 回答