VBScript - 将对象传递给子或函数

时间:2013-07-29 13:14:20

标签: vbscript

我正在尝试将两个对象传递给一个函数,但是会收到一条错误消息“错误的参数数量或无效的属性赋值:'space'

我可以操纵这些对象(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

下面的代码没有问题,但是当放入注释时我得到上面提到的错误。

1 个答案:

答案 0 :(得分:2)

您的代码有一个悬空的“End Sub”,您需要一个Class定义,并且对象变量需要一个“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

<强>更新

获得您提到的错误的可靠方法是:

  
    

s = Space()

         

错误号码:450     错误描述:参数数量错误或属性赋值无效

  

因此请检查您的其他代码是否非法使用Space()函数。

对象的来源以及您是否有权访问类定义与将它们传递给函数/ sub无关。

更新II:

不要将'space'用作变量名(它与该名称的功能发生冲突)。