VB6 和 VBA 调用子程序时如何传递 MSForms.ReturnInteger 型参数

VB6和VBA传递MSForms.ReturnInteger参数
本文介绍了在VB6和VBA中调用子程序时遇到MSForms.ReturnInteger参数传递的问题及解决方法。通过发现MSForms.ReturnInteger是一个接口而非类,创建并实现该接口的类,解决了参数传递的难题。同时,文章讨论了如何设置自定义类的缺省属性,以保持代码风格的一致性。

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 对象保存下来,以后就一直使用这个变量

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值