我试图在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属性。不过,我宁愿不必那样做。
谢谢你,所有人!
答案 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