首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VBA7编译错误7

VBA7编译错误7
EN

Stack Overflow用户
提问于 2013-02-27 17:49:58
回答 2查看 280关注 0票数 0

假设我有一个名为;Library.dll的自定义库(.dll)

在库中,有一个名为

我生成一个名为testObject的对象:

代码语言:javascript
复制
Dim testObject As New Library.Class

有一个叫做testFunction的函数:

代码语言:javascript
复制
Function testFunction(var1 As Double, var2 As Double, var3 As Double, var4 As Double, _
var5 As Double, var6 As Integer, var7 As Double, var8 As Double, var9 As Double)
    Call testSetup(var1, var2, var3, var4, var6, var7, var8, var9)
    testFunction = testObject.Field(var5)
End Function

此函数调用testSetup:

代码语言:javascript
复制
Sub testSetup(var1 As Double, var2 As Double, var3 As Double, var4 As Double, _
var5 As Double, var6 As Integer, var7 As Double, var8 As Double, var9 As Double)
    testObject.Lat1 = var1
    testObject.Lon1 = var2
    testObject.Lat2 = var3
    testObject.Lon2 = var4
    testObject.mth = var6
    testObject.GMT = var7
    testObject.ssn = var8
    testObject.icf = var9
End Sub

我遇到的问题是,在运行时,如果我在这个位置放置一个断点

代码语言:javascript
复制
testObject.Lat1 = var1

在运行并跨过下一行时,如果我悬停在对象上

代码语言:javascript
复制
testObject.Lat1

我看到了错误

对象变量或块变量未设置

没有崩溃,也没有导致失败的显式错误消息。

有人有什么想法吗?

我不确定错误是在库中还是在代码中?

此外,它还通过输入单元格=testFunction(var1,var2,var3.)从excel中运行。

编辑:注释中的更多信息

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-02-28 11:24:18

好的,已经找到解决办法了。这不是由于代码中的错误,而是

代码语言:javascript
复制
Dim testObject As New Library.Class

工作得很好。

我也是

代码语言:javascript
复制
Dim testObject As Library.Class

紧接着是

代码语言:javascript
复制
Set testObject = New Library.Class

问题是,在VB中,我注册了库dll文件

代码语言:javascript
复制
Tools > References

我以为这就足够了,因为我没有管理权限。

我错了。

我需要以管理员身份登录,然后使用

代码语言:javascript
复制
regsvr32 ".dll path"

现在,我在电子表格中看到了合理的输出。

票数 0
EN

Stack Overflow用户

发布于 2013-02-27 19:28:35

在VBA中,可以通过两种方法初始化对象:

  1. Dim o as New Object
  2. Dim o as Object: Set o = New Object

区别在于,在版本1中,对象是在代码中第一次访问时启动的!(注:这与VB.NET不同)。在第二种情况下,它将在运行Set o = New Object时显式地启动。

因此,当您在行testObject.Lat1 = var1中设置断点时,实际上还没有分配testObject,因此调试器无法访问任何内容!只有在执行这一行之后,您才会看到结果。

如果这让您感到困扰,您只需添加

代码语言:javascript
复制
Set testObject = new Library.Class
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15118813

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档