我是VB6的新手,并尝试编写一些用于CorelDraw的宏。
我有一个需要从Class模块传递到Standard模块的变量,在我的Class Module" SaveOptClass"我有一个名为IsSaved的公共变量,它在类模块上设置:
Public IsSaved As Boolean
Public Sub SaveFile()
If <some triggers> Then
IsSaved = True
End If
在标准模块中:
Sub DoSave()
Dim SaveClass As SaveOptClass
Set SaveClass = New SaveOptClass
If SaveClass.IsSaved = True Then
ActiveDocument.Save
Else
Form1.Show
End If
End Sub
基本上我试图通过&#34; IsSaved&#34;从类模块到标准的布尔值。 (如果IsSaved为true,则保存文档或显示表单。)
我在执行代码时测试过boolean是True,但是我无法将状态传递给另一个模块。
我想念这里的东西吗?提前谢谢。
答案 0 :(得分:0)
正如@shahkalpesh已经回答的那样,问题是你没有使用SaveOptClass
的有意义的实例。
在我看来,设计这种依赖关系的最佳方法是通过例程中的参数来使用它并尽可能避免使用全局变量。
在你的情况下,这会带来重写:
' in someOtherModule
Public Sub DoSave(saveOptObj as SaveOptClass)
If saveOptObj.IsSaved Then ' = True is unnecessary
ActiveDocument.Save
Else
Form1.Show
End If
End Sub
客户端代码可以是:
private saveOptObj as SaveOptClass
Public Sub SaveFile()
If <some triggers> Then
saveOptObj.IsSaved = True
End If
' ....
someOtherModule.DoSave(saveOptObj)
' ...
此时考虑重命名DoSave
,因为所采取的行动表明了不同的语义。在类似的情况下,最好移动调用者中的If Else
逻辑。无论如何,如果您希望在同一例程中将具有不同语义的操作分组,则最好使用DoSaveOr<SomethingElse>
之类的命名。