将代码放入用户窗体而不是模块是否有缺点?

将代码放入VBA用户表单而不是“常规”模块中是否有缺点?


这可能是一个简单的问题,但是在搜索网络和stackoverflow时,我还没有找到最终的答案。


背景:我正在用Excel-VBA开发数据库的前端应用程序。要选择不同的过滤器,我有不同的用户形式。我问哪种通用程序设计更好:(1)将控制结构放入单独的模块中,或者(2)将下一个用户表单或操作中的代码放入userform中。


让我们举个例子。我有一个Active-X按钮,可触发我的过滤器和表单。


Variant1:模块


在命令按钮中:


Private Sub CommandButton1_Click()

  call UserInterfaceControlModule

End Sub

在模块中:


Sub UserInterfaceControllModule()

Dim decisionInput1 As Boolean

Dim decisionInput2 As Boolean


UserForm1.Show

decisionInput1 = UserForm1.decision


If decisionInput1 Then

  UserForm2.Show

Else

  UserForm3.Show

End If


End Sub

在变体1中,控制结构位于常规模块中。并且关于接下来要显示哪个用户表单的决定与用户表单分开。决定下一个要显示的用户表单所需的任何信息都必须从用户表单中提取。


形式2:用户表单


在CommadButton中:


Private Sub CommandButton1_Click()

  UserForm1.Show

End Sub

在Userform1中:


Private Sub ToUserform2_Click()

  UserForm2.Show

  UserForm1.Hide

End Sub


Private Sub UserForm_Click()

  UserForm2.Show

  UserForm1.Hide

End Sub

在变体2中,控件结构直接位于用户窗体中,每个用户窗体都有有关其后继内容的说明。


我已经开始使用方法2进行开发。如果这是一个错误,并且此方法有一些严重的缺点,我希望尽快了解它。


海绵宝宝撒
浏览 595回答 3
3回答

天涯尽头无女友

在这个答案的帮助下,我终于开始了解MVP链接如何工作以使视图和逻辑保持分离。我从来没有使用过OOP,因此,如果“确定”按钮(例如)仅隐藏表单,那么就无法考虑表单如何按要求运行。在这个答案的帮助下,我建立了两个有效的MVP示例,即使我知道它在做什么,它仍然看起来像魔术。您是否认为MVP严格来说是OOP模式?如果没有,一个没有对象的人将如何实现呢?
打开App,查看更多内容
随时随地看视频慕课网APP