2013-07-29 31 views
0

我想兩個對象進入一個功能,但得到一個錯誤說「的參數或無效的屬性賦值錯誤號:‘空間’的VBScript - 傳遞對象到部分或功能

我能操縱這些對象(Object1Object2),但無法弄清楚如何將它們傳遞到一個函數。

Sub OnFormat 

Dim Object1 
Dim Object2 

Set Object1 = rpt.Sections("Details").Controls("txtManufacturer") 
Set Object2 = rpt.Sections("Details").Controls("Label36") 



'Call Position(Object1,Object2) 

'End Sub 

'Sub Position(Object1,Object2) 

If Object1.text = "" then 
Object2.Visible = false 
Object1.Visible = false 
else 
Object2.Top = space 
Object1.Top = space 
Object2.Visible = true 
Object1.Visible = true 
End If 

End Sub 

下面的代碼工作沒有問題,但是當註釋放在我得到提到的錯誤

回答

2

您的代碼有一個懸掛的「End Sub」,您需要一個類定義,並且對象變量需要一個「New ClassName」表達式。

Option Explicit 

Class cClass 
    Public m_Prop 
End Class ' cClass 

Dim Object1 
Dim Object2 

Set Object1 = New cClass 
Set Object2 = New cClass 
Call Func(Object1,Object2) 
WScript.Echo Object1.m_Prop, Object2.m_Prop 

Sub Func(Object1,Object2) 
    Object1.m_Prop = "A" 
    Object2.m_Prop = Object1.m_Prop & "B" 
End Sub 

輸出:

A AB 

更新:

一個肯定的方式,讓你提到的錯誤是:

這麼喜歡的東西開始=空格()

錯誤號:450 錯誤說明:參數或無效的屬性賦值

錯了號碼,以便檢查非法使用空間()函數的其他代碼。

對象來自何處以及您是否有權訪問類定義與將它們傳遞給函數/子無關。

更新II:

不要使用「空間」作爲變量名(它發生衝突,與該名稱的功能)。

+0

我在開始的時候忘了Sub。我正在嘗試使用已創建的對象。 Object1和2是我可以改變屬性的組件,我只是想知道如何將它們傳遞給例程。 –

+0

@AlGJohnston - 我的代碼正確地演示了:對象傳遞到Func(),在那裏更改,並且修改顯示在頂級WScript.Echo語句中。你得到的錯誤是由你沒有發佈的代碼造成的。 –

+0

問題是組件是由我正在使用的程序預先構建的,所以我沒有對象來自的類。 –