VB6 和 VBA 调用子程序时如何传递 MSForms.ReturnInteger 型参数
VB6 和 VBA 调用子程序时如何传递 MSForms.ReturnInteger 型参数
由于想偷个懒,直接调用一下文本框的按键事件处理程序,没想到懒没偷成,反而浪费了几十倍的时间。原因是出现了参数怎么弄都传不进去的状况,让人很恼火,整天想着这个事情,不弄明白不舒服。
本来嘛,直接调用文本框的按键事件处理程序很简单的,
Call TextBox1_KeyDown(Nothing, 0)
就搞定了,可这不是咱们的风格,万一以后其他人士修改代码,使用了 KeyCode 这个参数,我这个调用就会造成空引用的异常。可不能为了一时的方便留下隐患,好歹要弄个有效的参数传过去才行。然后问题就出来了,直接传值不行,传递其它类型的变量也不行。
来看代码:
Private Sub TextBox1_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
MsgBox KeyCode
KeyCode = 99
End Sub
那个 MSForms.ReturnInteger 肯定就是个类,那么按规矩就得这样调用:
Private Sub CommandButton0_Click()
Dim c As MSForms.ReturnInteger
Set c = New MSForms.ReturnInteger '可是执行到这里一定出错,说是创建对象失败
c = 7
Call TextBox1_KeyDown(c, 0)
MsgBox c
End Sub
这就让人郁闷了,与经验不符啊!
上网找,没找到任何有用的东西,有一个相关度最高的解决方案是申明一个全局变量,然后设法随便进入一个事件处理程序,把系统传递过来的 KeyCode 对象保存下来,以后就一直使用这个变量