Class 自定义类声明-同一类的属性过程定义
我只能假设以下代码中的错误消息(Excel中的错误消息较长,但与MSDN中描述的问题相对应),我不明白为什么Class 自定义类声明-同一类的属性过程定义,class,excel,vba,Class,Excel,Vba,我只能假设以下代码中的错误消息(Excel中的错误消息较长,但与MSDN中描述的问题相对应),我不明白为什么 Private cLocation As String ' Location Public Property Get Location() As String Location = cLocation End Property Public Property Let Location(Value As String, Value1 As String) If Valu
Private cLocation As String
' Location
Public Property Get Location() As String
Location = cLocation
End Property
Public Property Let Location(Value As String, Value1 As String)
If Value <> "" And Len(Value) > 2 Then
cLocation = Value
Else
cLocation = Value1
End If
cLocation = Test.scrubLocation(cLocation, Me.NewZipcode)
End Property
Private cLocation作为字符串
“位置
公共属性获取位置()作为字符串
位置=闭合
端属性
公共属性出租位置(值为字符串,值1为字符串)
如果值“”和Len(值)>2,则
clo阳离子=值
其他的
cLocation=Value1
如果结束
cLocation=Test.scrubLocation(cLocation,Me.NewZipcode)
端属性
它重点介绍了这个特殊的Let
过程
属性获取过程的参数数量不会减少一个
大于匹配属性Let或的参数数
属性集过程。将参数添加到属性Let或属性
根据需要从属性Get中设置或删除参数
我假设这不可能-Get
的参数比Let
少2个。此外,将参数添加到Get
也无法解决任何问题
属性Get的参数类型必须与
属性Let或属性集的相应参数,但
额外的属性集参数。修改中的参数声明
相应的程序定义,因此它们是适当的
匹配
属性Let的额外参数的参数类型必须为
匹配相应属性Get过程的返回类型。
修改属性Let中的额外参数声明或
相应属性的返回类型为
适当匹配
一切都是字符串,所以这也应该是确定的
您使用可选数组或参数数组定义了属性过程
参数中不允许使用ParamArray和可选参数
财产程序。重新定义过程而不使用这些
关键词
没有
我还确保我没有在任何其他地方设置cLocation
。在整个项目中,除了如上所示的Let
之外,没有其他程序对cLocation
进行修改
我是不是做错了
Let
?我的印象是,我可以通过这种方式完成。您的Get
过程也必须有一个名为Value
的字符串参数:
Public Property Get Location(Value As String) As String
Location = cLocation
End Property
如果
Let
有两个参数,Get
必须根据第一个引用的部分有一个,而不是没有。我确实尝试向Get
添加一个参数,但没有任何效果。然而,这是一个武断的论点。在这种情况下,Get
是否有一些“形式要求”?它必须是String
参数,并且与Let
过程的第一个参数同名。Rory完全正确,但您的代码对属性Let
的使用有点奇怪。更常见的是在调用模块中运行If
子句:If Len(val)>2然后obj.Location=val else obj.Location=val2
。在你的Let
过程中,你只有一个参数。@Ambie你的评论让我思考,我想出了一个更优雅的解决方案。我不会把它贴在这里,因为它对我提出的问题毫无帮助,但有一个无形的投票权。