ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 7365|回复: 12

[原创]关于RANGE和OFFSET一个有趣发现:

[复制链接]

TA的精华主题

TA的得分主题

发表于 2005-6-18 10:21 | 显示全部楼层 |阅读模式

关于RANGE和OFFSET一个有趣发现:

sub fig() set xx=range("a3") xx(2).select msgbox xx(-1).address msgbox xx(2,2).address end sub

原来 offset 可以以数组的形式出现,没想到吧

TA的精华主题

TA的得分主题

发表于 2005-6-18 10:25 | 显示全部楼层
set xx=range("a3")  返回的不是对象,为什么要用关键字 “set”?

TA的精华主题

TA的得分主题

发表于 2005-6-18 10:28 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
不是数组。 如果xx=range("a3"), xx(2)=range("a3").Cells(2) xx(-1)=range("a3").Cells(-1) xx(2,2)=range("a3").Cells(2,2) 只是对象的省略写法。
[此贴子已经被作者于2005-6-18 10:29:07编辑过]

TA的精华主题

TA的得分主题

发表于 2005-6-20 17:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-6-20 18:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2005-6-20 19:58 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2005-6-20 21:27 | 显示全部楼层

谢谢各位,确实不是数组,只是类似罢了。但下面应该是数组:

xx=[a1:a10]

msgbox xx(1,1)

msgbox xx(2,1)

msgbox ubound(xx)

[此贴子已经被作者于2005-6-20 21:39:31编辑过]

TA的精华主题

TA的得分主题

发表于 2005-6-20 23:09 | 显示全部楼层

figfig提出的问题的确很有趣,以下是验证,的确是数组,不是对象。

Sub dd() xx = [a1:a10] Debug.Print VBA.VarType(xx(1, 1)) Debug.Print VBA.TypeName(xx(2, 1)) Debug.Print VBA.IsObject(xx(10, 1)) Debug.Print VBA.IsArray(xx) End Sub

TA的精华主题

TA的得分主题

发表于 2005-6-21 07:24 | 显示全部楼层
以下是引用figfig在2005-6-18 10:21:00的发言:

关于RANGE和OFFSET一个有趣发现:

sub fig() set xx=range("a3") xx(2).select msgbox xx(-1).address msgbox xx(2,2).address end sub

原来 offset 可以以数组的形式出现,没想到吧

其实这是一个RANGE对象的ITEM属性,

Item 属性是大多数集合的默认属性,因此通过省略Item关键字,可将相同的语句简化。

应用于 Range 对象的 Item 属性。

返回一个 Range 对象,该对象代表对指定区域某一偏移量处的区域。

expression.Item(RowIndex, ColumnIndex)

expression 必需。该表达式返回一个 Range 对象。

RowIndex Variant 类型,必需。要访问的单元格的索引号,顺序为从左到右,再往下。Range.Item(1) 返回区域左上角的单元格,Range.Item(2) 返回紧靠左上角单元格右边的单元格。

ColumnIndex Variant 类型,可选。指明要访问的单元格所在列的列号的数字或字符串,1 或 “A”表示区域中的第一列。

说明

语法 1 使用行号和列号或列标作为索引参数。关于此语法的详细信息,请参阅 Range 对象。RowIndex 和 ColumnIndex 参数为相对偏移量。也就是说,如果 RowIndex 指定为 1,将返回区域内第一行中的单元格,而非工作表的第一行。例如,如果选定区域为单元格 C3,则 Selection.Cells(2, 2) 返回单元格 D4(可用 Item 属性在原始区域之外进行索引)。

TA的精华主题

TA的得分主题

发表于 2005-6-21 10:09 | 显示全部楼层

这个问题我很早就发现了.

dim xx()

xx= [a1:a10].value

xx=[a1:a10]

2种方法返回的都是数组,不过前一种方法要慢一些,因为要调用一个属性.value,尽管差别是很细微的。

这种方法真得很管用,比一个一个cells给数组负值快多了。缺点是不能定义数据类型。我血藏了几个月没有贴出来,现在已经有人发现了,呵呵!

[此贴子已经被作者于2005-6-21 10:09:38编辑过]
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-5-4 09:55 , Processed in 0.042621 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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