我正在尝试将两个对象传递给一个函数,但是会收到一条错误消息“错误的参数数量或无效的属性赋值:'space'
我可以操纵这些对象(Object1
和Object2
),但无法弄清楚如何将它们传递给函数。
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
下面的代码没有问题,但是当放入注释时我得到上面提到的错误。
答案 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'用作变量名(它与该名称的功能发生冲突)。