咨询数据类型不匹配问题

山水无言 2014-03-15 01:23:04

Sub test()
’通过下面6句把一个数组传递给cheng函数,则在cheng函数的sigma = sigma + CLng(val)处提示数据“类型不匹配”,我原来是sigma = sigma + val,提示类型不匹配,于是修改为sigma = sigma + CLng(val),还是提示类型不匹配。什么原因?怎么修改呢?

Dim x As Variant
Dim sz(1 To 3) As Variant
For x = 1 To 3
sz(x) = x
Next x
MsgBox cheng(sz)

‘直接用下面语句调用,cheng函数能正常返回结果
'MsgBox cheng(1, 2, 3, 4, 5, 6)
End Sub

Function cheng(ParamArray vals() As Variant)
Dim val As Variant
Dim sigma As Long
sigma = 0
For Each val In vals
'MsgBox TypeName(val)
'MsgBox TypeName(sigma)
sigma = sigma + CLng(val)
Next
cheng = sigma
End Function
...全文
294 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
dsd999 2014-03-17
  • 打赏
  • 举报
回复
Function cheng(vals() As Variant)
山水无言 2014-03-15
  • 打赏
  • 举报
回复
ParamArray怎么用呢? Function cheng(ParamArray vals() As Variant) Dim val As Variant Dim sigma As Long sigma = 0 For Each val In vals Debug.Print val '循环里只留这一条,仍然提示数据类型不匹配 Next cheng = sigma End Function Function cheng(ParamArray vals() As Variant) Dim val As Variant Dim sigma As Long sigma = 0 For Each val In vals 'MsgBox TypeName(val) 'MsgBox TypeName(sigma) 'sigma = sigma + CLng(val) 'Debug.Print val Debug.Print 1 '不适用val变量,只是打印1到立即窗口,可是for each ... in不会循环 Next cheng = sigma End Function

5,139

社区成员

发帖
与我相关
我的任务
社区描述
其他开发语言 Office开发/ VBA
社区管理员
  • Office开发/ VBA社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧