|
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用 · 内置多项VBA编程加强工具 ★ 免费下载 ★ ★ 使用手册★
本帖最后由 qqwe13 于 2018-9-16 10:14 编辑
因为我是网页与VBA联合使用,需要从HTML中下传设置信息,中间使用CallByName 来转接相关变量,但是遇到如下问题
如果我的自定义类中的属性 使用 Property 限制,CallByName 会报错,如果取消Property 方式,则不会出问题
我需要使用Property 来校验数据,这个没法忽略,请教各位大神,这个有什么方法可以回避么?
附测试文件
- '我的自定义类 globalData
- Private plnNumOfPaper As Long '每页纸上的贴纸数量v
- Public Property Let lnNumOfPaper(s As Double)
- plnNumOfPaper = s
- End Property
- Public Property Get lnNumOfPaper() As Double
- lnNumOfPaper = plnNumOfPaper
- End Property
复制代码- Option Explicit
- Dim gbdata As globalData
- '功能函数
- Function GetStringFromHtmlData(name As String, data As Variant) As String
- CallByName gbdata, name, VbLet, data '此处总是提示类型不符
- End Function
- Sub Test()
- Set gbdata = New globalData
- GetStringFromHtmlData "lnNumOfPaper", "34"
- End Sub
复制代码
如果我将自定义类模块中的属性直接改成Public赋值,就没问题比如下面这样
- '我的自定义类 globalData
- Public lnNumOfPaper As Long '每页纸上的贴纸数量v
复制代码 已经解决,感谢“风清扬”,自定义类中的属性也改成Variant,对于此问题可以修复。遗留问题是我的自定义类中,其他Public属性的变量,像string类型,long类型都可以直接赋值,如果使用Property 方式,就必须设置变量类型跟传入参数的函数一致才行,不知为什么 暂时做个标记
- '我的自定义类 globalData
- Private plnNumOfPaper As Variant'每页纸上的贴纸数量v
- Public Property Let lnNumOfPaper(s As Variant)
- plnNumOfPaper = s
- End Property
- Public Property Get lnNumOfPaper() As Variant
- lnNumOfPaper = plnNumOfPaper
- End Property
复制代码
|
评分
-
1
查看全部评分
-
|