Excel精英培训网

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

[已解决]关于index的问题

[复制链接]
发表于 2012-6-17 19:10 | 显示全部楼层 |阅读模式
Sub e()
Dim arr
Dim arr1
arr1 = [a1:d10]
arr = Application.Index(arr1, 3)

[g1].Resize(4, 1) = Application.Transpose(arr)
End Sub
这段代码中颜色标注的地方,index(arr1,3)中的arr我如果用[a1:d10]代替,不声明arr1,就运行不出来,这是为什么呀?烦请高人指点{:30:}
最佳答案
2012-6-17 19:20
使用[A1:D10].value来保证index的第一参数是数组,而不是引用(Range对象)。
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2012-6-17 19:20 | 显示全部楼层    本楼为最佳答案   
使用[A1:D10].value来保证index的第一参数是数组,而不是引用(Range对象)。
回复

使用道具 举报

 楼主| 发表于 2012-6-17 19:53 | 显示全部楼层
Benol 发表于 2012-6-17 19:20
使用[A1:D10].value来保证index的第一参数是数组,而不是引用(Range对象)。

谢谢,请问在vba中什么时候不用加这个value,什么时候必须要加value啊?
回复

使用道具 举报

发表于 2012-6-17 19:59 | 显示全部楼层
womohe 发表于 2012-6-17 19:53
谢谢,请问在vba中什么时候不用加这个value,什么时候必须要加value啊?

range有很多属性,包括字体大小、背景,各类颜色等,value指的就是指
回复

使用道具 举报

发表于 2012-6-17 23:08 | 显示全部楼层
womohe 发表于 2012-6-17 19:53
谢谢,请问在vba中什么时候不用加这个value,什么时候必须要加value啊?

这个没有研究过。我觉得可能以下几点吧:
1. 就是你例中的index,它允许第一参数为引用或数组(具体参见index函数的帮助中的“数组形式”和“引用形式”),这时你不指定value属性,就有可能被认为是引用(range对象)。
2. 当一个Range对象从另一个Range对象接收值时,后者必须指定value属性,我猜也可能是Range对象可以接收数组值的道理吧。
3. 还有一些特殊的集合(如sheets、shapes等),既可以使用集合中成员的序号做下标,也可以用成员的名称做下标的,如果该名称或序号存在于某个单元格中,最好也指明value属性(如Sheets([A1].value))。
其实,在能省略.value的情况下省略了也不能提高代码执行效率,所以万无一失的做法就是,在不确定的时候就写上。
回复

使用道具 举报

 楼主| 发表于 2012-6-18 11:41 | 显示全部楼层
Benol 发表于 2012-6-17 23:08
这个没有研究过。我觉得可能以下几点吧:
1. 就是你例中的index,它允许第一参数为引用或数组(具体参见 ...

谢谢您的回答,虽然我还是懵懵懂懂{:011:}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-6-4 15:06 , Processed in 0.489230 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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