2017-10-15 296 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被窒息。