Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 2138|回复: 6

[已解决]动态数组声明的一例

[复制链接]
发表于 2010-3-30 10:57 | 显示全部楼层 |阅读模式

刚看到DJ的一个问题:http://www.excelpx.com/forum.php?mod=viewthread&tid=122946

于是,我胡乱测试,满以为会报错:

 


Sub test()

    Dim x As String
    Dim arr As Variant

    x = "1,2,3"
    ReDim arr(x)
    Stop
    
End Sub

结果,出乎意料。。。。 请问:为什么结果会这样?谢谢!

最佳答案
2010-3-30 11:16

可以看到,其特性与Cint完全一致

当小数部分恰好为 0.5 时,Cint CLng 函数会将它转换为最接近的偶数值。例如,0.5 转换为 0、1.5 转换为 2。


Sub Test1()
    Dim arr As Variant
    ReDim arr("1,2,3,1", "1.5")
    Stop
    '等同于下面语句
    ReDim arr(CInt("1,2,3,1"), CInt("1.5"))
    Stop
End Sub

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2010-3-30 11:14 | 显示全部楼层

在Redim语句中,若subscripts类型不符,则会自动执行Cint函数将其转化成整形。


Sub Test1()
    Dim arr As Variant
    ReDim arr("1,2,3,1", "1.2")
    Stop
    '等同于下面语句
    ReDim arr(CInt("1,2,3,1"), CInt("1.2"))
    Stop
End Sub
回复

使用道具 举报

发表于 2010-3-30 11:16 | 显示全部楼层    本楼为最佳答案   

可以看到,其特性与Cint完全一致

当小数部分恰好为 0.5 时,Cint CLng 函数会将它转换为最接近的偶数值。例如,0.5 转换为 0、1.5 转换为 2。


Sub Test1()
    Dim arr As Variant
    ReDim arr("1,2,3,1", "1.5")
    Stop
    '等同于下面语句
    ReDim arr(CInt("1,2,3,1"), CInt("1.5"))
    Stop
End Sub

回复

使用道具 举报

 楼主| 发表于 2010-3-30 11:36 | 显示全部楼层

谢谢阿木!

学习了,,,,,,你是怎么想到的[em11]

回复

使用道具 举报

发表于 2010-3-30 12:13 | 显示全部楼层

我也不知道怎么想到的。。。。
回复

使用道具 举报

 楼主| 发表于 2010-3-30 12:59 | 显示全部楼层

QUOTE:
以下是引用amulee在2010-3-30 12:13:00的发言:
我也不知道怎么想到的。。。。

“好强大的小宇宙啊。。。。。”

--- 圣斗士中常听到一句话

回复

使用道具 举报

发表于 2010-3-30 13:20 | 显示全部楼层

QUOTE:
以下是引用爱疯在2010-3-30 12:59:00的发言:

“好强大的小宇宙啊。。。。。”

--- 圣斗士中常听到一句话

比较经典,学习来了

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-16 14:47 , Processed in 0.130694 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表