0

我正在尝试将两个对象传递给一个函数,但收到一条错误消息“参数数量错误或属性分配无效:‘空格’

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

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

4

1 回答 1

3

您的代码有一个悬空的“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 = 空间()

错误号:450 错误描述:参数数量错误或属性分配无效

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

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

更新二:

不要使用“空格”作为变量名(它与该名称的功能冲突)。

于 2013-07-29T13:26:47.400 回答