Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: Zipall

vba中使用index字符数为什么不能超过255?

  [复制链接]
 楼主| 发表于 2011-7-21 17:05 | 显示全部楼层
兰色幻想 发表于 2011-7-21 16:59
arr只是变量名称,不是excel定义的名称

下面的ABC才是定义的名称

那我还是不明白
index(arr,0,1)
数组arr和excel定义的名称有什么关系?
难道index是将arr里的每一个元素的值,作为该元素的名称吗?


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

发表于 2011-7-21 17:12 | 显示全部楼层
Zipall 发表于 2011-7-21 17:05
那我还是不明白
index(arr,0,1)
数组arr和excel定义的名称有什么关系?

如上定义ABC后,就可以在代码中这样使用
MsgBox Application.Index([ABC], 1, 2)
而在工作表中可以
  =INDEX(ABC,1,2) ‘这里可以直接用定义的名称作为INDEX第一个参数

回复

使用道具 举报

 楼主| 发表于 2011-7-21 17:21 | 显示全部楼层
回复 兰色幻想 的帖子

但是我没有定义过名称啊.代码中也没有和定义名称有关的内容,为什么会受到这个名称长度的限制?

你的意思是这段代码运行时,excel未经我允许自己定义了一些名称? 当它干这事时受阻就报错了?
回复

使用道具 举报

发表于 2011-7-21 17:23 | 显示全部楼层
Zipall 发表于 2011-7-21 17:21
回复 兰色幻想 的帖子

但是我没有定义过名称啊.代码中也没有和定义名称有关的内容,为什么会受到这个名称长 ...



不是因为你是否定义了名称,我猜想正是因为存在引用定义名称的这种可能,所以在设计VBA时微软才会把这个限制为255个字符,就象单元格中最大显示1024个字符,不管你输不输入这么多字符,这个限制都存在,只要你超过,就会受它的限制,不超过这个限制也存在。
回复

使用道具 举报

发表于 2011-7-21 17:28 | 显示全部楼层
再如:象range("地址") 中的地址长度也是255个字符,而实际上我们只是用的地址串,并没有定义名称,“A1,B1,B3,C4......”但照样受255个字符的限制,因为VBA有可能认为你这是定义的名称,不是单元格地址串
回复

使用道具 举报

 楼主| 发表于 2011-7-21 17:36 | 显示全部楼层
回复 兰色幻想 的帖子

谢谢你不厌其烦的解答,我想可能是我钻了牛角尖了,所以还是没能理解名称和它出错的必然联系.
先放一段,等我消化理解一下你的解答再讨论.

再次感谢.
回复

使用道具 举报

发表于 2011-7-21 17:47 | 显示全部楼层
本帖最后由 兰色幻想 于 2011-7-21 17:47 编辑

     我今天也查询了和255限制有关的一些资料,发现这些都存在着引用名称的可能。只要存在引用名称的可能。就有这个限制, 就象现在的法律制度或者合同或规章制度,只要存在有违反的可能,就会在法律和合同条文中进行规定,无论有没有人违反。
      微软没有解释,我们也只能瞎猜,呵呵~~
回复

使用道具 举报

发表于 2011-7-21 18:41 | 显示全部楼层
传递的字符串长度超过 255 个字符将在 Excel 中被截断:http://support.microsoft.com/kb/213841/zh-cn

刚找到的,这算微软对此的说明么。
回复

使用道具 举报

发表于 2011-7-21 19:13 | 显示全部楼层
回复 爱疯 的帖子

这个早就看过了,好象也没有什么关系,只是说明一种现象
回复

使用道具 举报

发表于 2011-7-22 10:06 | 显示全部楼层
本帖最后由 吕?布 于 2011-7-22 10:08 编辑

基于速度考虑,在Excel的函数中,字串的类型一般是LPSTR(a null-terminated C string),该类型是一个byte类型数组,该数组以#0(null-terminated)做为结束标识符,数组第一个元素不能使用,用来记录字串的长度。由于只使用了一字节(1 byte),来记录字串长度,所以该字串的长度最长只能是255.由于1 Byte=8 bit, 2^8=256, 8 bit能表达的无符号数为0-255.
所以,我觉出现错误的原因是因为Index函数内部使用LPSTR处理字符串。导致长度超过255的字符串出错。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 02:57 , Processed in 0.296371 second(s), 7 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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