真的是没妞就没对象吗?哈哈哈

Oceanable 2019-02-03 02:04:22

问题描述:用 VB6 写了个 ActiveX DLL,类名是 oManager。
以下代码是 Excel VBA 调用此 DLL的两个过程:有 New 的时候运行正常,没有 New 的时候提示对象引用出错。
个人认为 ObjDLL是全局变量,创建对象实例后也一直没有被释放,为何无 New 就报错?


Option Explicit
Public ObjDLL As New oManager_Prj.oManager ( 就是这个妞 ^_^)
==================================================================================
Public Sub IFace_oManager( )

On Error Resume Next

Set ObjDLL = GetObject(, "oManager_Prj.oManager")

If Err Then
Err.Clear: Set ObjDLL = CreateObject("oManager_Prj.oManager")
If Err Then
MsgBox Err.Description
Exit Sub
End If
End If

End Sub

==================================================================================
Public Sub 管理系统( )
IFace_oManager : ObjDLL.ShowMainForm
End Sub


提前祝各位新年快乐,步步高升!
...全文
687 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Oceanable 2019-02-19
  • 打赏
  • 举报
回复
引用 6 楼 脆皮大雪糕 的回复:
不要说觉得 实实在在的单步跟踪调试,你就知道你的对象啥时候消失了,一共没几行代码,一会儿就见分晓了
嗯,我试试,,,
脆皮大雪糕 2019-02-18
  • 打赏
  • 举报
回复
不要说觉得 实实在在的单步跟踪调试,你就知道你的对象啥时候消失了,一共没几行代码,一会儿就见分晓了
Oceanable 2019-02-16
  • 打赏
  • 举报
回复
引用 4 楼 脆皮大雪糕 的回复:
你确定set得到了正确的结果么?
On Error Resume Next 掩盖了很多事实了吧,对ObjDLL 添加全局监视,然后单步跟踪,逐句执行下来看看你的对象到底正常不正常。


On Error Resume Next 是为了 get 出错的时候转到 Create

1)如果对象已经存在就不创建了直接 get

2)对象不存在的话就转到 CreateObj 然后 再 set

我觉得没啥问题啊,,,我就是想知道,对象是何时消失的
脆皮大雪糕 2019-02-15
  • 打赏
  • 举报
回复
你确定set得到了正确的结果么? On Error Resume Next 掩盖了很多事实了吧,对ObjDLL 添加全局监视,然后单步跟踪,逐句执行下来看看你的对象到底正常不正常。
Oceanable 2019-02-14
  • 打赏
  • 举报
回复
我知道 dim 只定义了对象引用,并未创建实例。

但我是用 public 定义的对象引用,用 createObject 创建的对象实例,,

而且整个过程未set 过 ObjDLL 为 nothing,,为何报错?
weixin_44281847 2019-02-12
  • 打赏
  • 举报
回复
这个可以
脆皮大雪糕 2019-02-11
  • 打赏
  • 举报
回复
dim 只是定义了变量的类型。 new是创建了对象实例,并且将实例初始化。 就像你坚定的认为床有一半是给你对象睡的,这只是有个定义,因为有了这个定义,确定了将来这个位置的实例特征,比如必须要凶不能有JJ,于是这个位置不能躺进来一大汉,否则你的大脑会崩溃抛异常。 但在没有new之前你对那个空间所做的一切,你的大脑都会告诉你:不论手 速多快都是个error,那不真实! 直到你从快递包裹里拿出你的对象灌满了气,放在床的那一半,有了new的实例,你的右手才能解放出来,大脑不报错了,告诉你就是那个feel。 当然,你的床能够足够宽大,可以定义好几个位置,可以new不同款的对象,基础的模型一样很凶不会出现JJ,你可以为每个对象定制不同的属性细节,远看相同,细琢磨又都有不同。当你要做什么只能在有对象的位置做,否则大脑会警告你那感觉不对!

2,462

社区成员

发帖
与我相关
我的任务
社区描述
VBA(Visual Basic for Applications)是Visual Basic的一种宏语言,是在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
社区管理员
  • VBA
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧