来自返回范围的函数的vba value属性

时间:2016-04-22 13:55:41

标签: excel vba range

我试图在Excel VBA中构建一个类。我的一个私有字段(应该是)使用对返回范围的函数的调用来设置,然后直接分配该函数返回的.Value属性。

这是我的代码的基本要点:

' Somewhere up in the private field declaration
Dim mMill as String

' Where the private field is set (internal to class)
mMill = getMill().Value

' The 'getMill() function
Private Function getMill() As Range
' Define the range of the mill

Set getMill = mLandingSheet.Range("D1")

End Function

我在“结束功能”中收到错误消息没有对象变量或变量集的行。我的想法是Excel不允许我调用一个函数并在同一行返回返回对象(在本例中为Range)的.Value属性。我已经验证我可以使用该函数返回一个范围并分配给其他变量,然后从那里访问.Value属性。不过,我宁愿不必那样做。

谢谢你,所有人!

2 个答案:

答案 0 :(得分:1)

哈哈,哇。所以...我的坏人!我对自己和你撒谎!

我的私有字段变量(mMill)未被设置为Private mMill As String似乎在我的帖子中表示。它实际上被指定为Private mMill As Range!咄!将其更改为Private mMill As String已更正问题。

再次,我的坏;谢谢你@Alex批评我足以让我克服我在这件事上的盲点。

对不起混淆!

答案 1 :(得分:0)

是否应使用Property设置值?

例如:
创建一个名为clsMillExample的类。

将此代码添加到课程中:

Private mMill As String

Private Sub Class_Initialize()
    MillRange = mLandingSheet.Range("D1")
End Sub

Public Property Get Mill() As String
    Mill = mMill
End Property

Private Property Let MillRange(Reference As Range)
    Select Case Reference.Value
        Case Is <> ""
            mMill = Reference.Value
        Case Else
            mMill = "Empty"
        End Select
End Property

将此代码添加到普通模块:

Sub Test()

    Dim MillClass As clsMillExample
    Set MillClass = New clsMillExample

    MsgBox MillClass.Mill

End Sub

我通常使用此网站作为参考:http://www.cpearson.com/excel/classes.aspx