2017-10-15 295 views
0
Dim Srv As Object          
Dim Mdl As Object 

Dim SubVarGroups As Object 
Dim SubVarGroup As Object 

Dim nSubVarGroup As Integer        
Dim nSubVar As Integer 

Dim FileName As String 

Set Srv = CreateObject("Simpack.Gui.90900") 
Set Mdl = Srv.Spck.openModel(FileName) 

Set SubVarGroups = Mdl.getSubvarGroupList(False) 
nSubVarGroup = SubVarGroups.Count 

Dim c As Integer, i As Integer, j As Integer 

For i = 0 To nSubVarGroup 

Set SubVarGroup = SubVarGroups.Item(i) 
Worksheets("Test").Cells(i + 1, 1).Value = SubVarGroup.FullName 

Next i 

我使用此代码通过COM接口从第三方程序中获取一些信息。但是,我得到了“运行时错误”的一节使用For循环中的“set”运行时错误“91”

Worksheets("Test").Cells(i + 1, 1).Value = SubVarGroup.FullName 

运行时错误“91”: 对象变量或带块变量未设置

你能帮我在哪里”米错了?

+1

在'Set Mdl = Srv.Spck.openModel(FileName)'使用它之前,您不需要为'Filename'变量赋值' –

+2

看起来您的for循环看起来超出范围。如果您将nsubvargroup更改为nsubvargroup-1,会有帮助吗? –

+0

@JeremyKahan你真棒我的朋友。 :) – Hakan

回答

-1

要调试: 与像1虚值或 “a”

工作表( “测试”)替换每个值单元(I + 1,1)。价值= “一个”

工作表(“Test”)。Cells(1,1).Value =“a”

..等等...... 继续直到找到不被接受的罪魁祸首。

+0

好技术,但我怀疑它不会在这里完全工作。工作表可以很乐意填写该单元格。但是对于从前一行中拉出来的物品并不满意。 –

+0

或者更可能的是,我们无法尝试分配,因为您无法从记录中获取完整名称(空或一些垃圾)。我没有让你失望。这个想法最终会到达那里,我相信(因为一切都会奏效,所以你会发现罪魁祸首就在上面)。 –

0
For i = 0 To nSubVarGroup 

必须

For i = 0 To (nSubVarGroup-1) 

因为只有nSubVarGroup项目循环并输入列表是从0开始的。 我不能在没有运行代码的情况下证明它,但我认为发生的是在最后一次循环中,SubVarGroup被赋值为nothing或null(“未设置”),所以SubVarGroup.FullName被窒息。