好的。。。所以我正试着把我的头脑放在房地产上。我已经在谷歌上搜索了很多,但真的需要试着完全理解。我有三个组件:
- 我有一个UserForm:";frmView1">
- 我有一个类模块:;clsPresenter1">
- 我有一个常规模块:;modModel1">
My UserForm有一个txtbox";TextBox1";这是用户表单代码:
Option Explicit
'View (The V in MVP)
Public Event OnTxtBoxChange()
Public Property Get TxtBoxInfo() As String
TxtBoxInfo = TextBox1.Text
End Property
Private Sub TextBox1_Change()
RaiseEvent OnTxtBoxChange
End Sub
我的课堂模块:
Option Explicit
'Presenter Class (The P in MVP)
'Implements Business Logic
Private WithEvents objUserForm As frmView1
Private Sub Class_Initialize()
Set objUserForm = New frmView1
End Sub
Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub
Private Sub objUserForm_OnTxtBoxChange()
DoSomething
End Sub
我的常规模块:
Option Explicit
'Model Module (The M in MVP)
'Business Logic
Private objPresenter As clsPresenter1
Public Sub DoSomething()
Sheet1.Cells.Clear
Sheet1.Cells(3, 3) = objPresenter.TxtBoxContent
End Sub
所以这是一个缩短的版本,以简化我的问题。事实上,我有代码来显示表单、关闭表单以及其他一些正常工作的东西。但我的问题是…如何将用户在txt框中键入的内容传递到工作表?我不断得到:
Compile error: Expected Function or variable
好的。。。所以我可能已经想明白了。。。我改了:
Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub
收件人:
Public Function TxtBoxContent() As String
TxtBoxContent = objUserForm.TxtBoxInfo
End Function
这似乎奏效了。。。如果这不是正确的方式,请告诉我。。。
也许这实际上是正确的方式?再次更改:
Public Sub TxtBoxContent()
objUserForm.TxtBoxInfo
End Sub
收件人:
Public Property Get TxtBoxContent() As String
TxtBoxContent = objUserForm.TxtBoxInfo
End Property
这似乎再次奏效。。。但是,如果我总是可以使用一个属性,为什么我会在我的类模块("演示者")中使用一个函数呢?