Excel精英培训网

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

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

  [复制链接]
发表于 2011-7-20 13:31 | 显示全部楼层
等我上完新手班和函快班也报个VBA,加油
回复

使用道具 举报

发表于 2011-7-20 13:35 | 显示全部楼层
本帖最后由 爱疯 于 2011-7-20 13:50 编辑

是不是这样:

当分列时,如果单元格中字符个数超过255,就可能发生错误。(因为03只有256列,如果按位分列,>255的长度分列,就将>256列)。
虽然,一个单元格中的字符个数可以>255,1楼也只是讨论输入输出到单元格的问题,但由于是和单元格来来往往,MS为避免尽量不出错(如果对此后的数据进行分列,就会出错),于是有此强制。这样,MS认为更保险吧。于是,这时不得>255

这时的含义,是指能确定的时候,包括确定可以或确定不可以。
test4()属于不能确定;test5()属于能确定。当然,这又是别的原因了(不是分列),自己说不上。
{:251:}
回复

使用道具 举报

发表于 2011-7-21 12:35 | 显示全部楼层
回复

使用道具 举报

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

回复 Zipall 的帖子

   经测试,你写的两段代码都有报错,我的是XP+excel2003
      其实在调用单元格相关内容时,都会受到255的限制,比如Range("地址")中的地址串、EVALUATE(“对象或表达式”)中的字符,等等都会受到255个字符的限制。
      我觉得它和列数无关,而是和单元格的名称定义有关系,单元格定义名称时最大字符数不能超过255个字符,而range("地址")中的地址也可以用名称替代单元格地址,所以它有255的个数限制,Evaluate 方法将一个 Microsoft Excel 名称转换为一个对象或者一个值,这里也是名称,所以它也有255个字符的限制,而本例中工作表函数index也包括引用单元格区域,而单元格区域可以用定义的名称表示,所以它也有255个字符的限制,以此类推,只要和单元格表示有关的,应该都有255个字符的限制。
     以上仅个人猜想,暂时找不到官方的说明。
回复

使用道具 举报

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

谢谢回复.我特意找了2003测试,的确2段都报错.但在2010中只有test4报错.

另外,我没看明白你的意思.

单元格的名称和单元格的值的长度有关系吗?

换句话说,7楼代码中的32767改为255只改变了单元格的值,为什么能运行呢?

如果按照你的解释,哪个名称也被改变了呢?

回复

使用道具 举报

发表于 2011-7-21 16:32 | 显示全部楼层
index(单元格引用,参数,参数)
这里单元格引用的位置如果是字符长度大于255,也是超出了单元格名称的255长度,感觉有点牵强,但找不到更合理的解释了。
回复

使用道具 举报

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

那为什么countif的第一个参数引用的单元格的字符串长度也超过255了,却不报错?


  1. Sub test6()
  2.     With Application.WorksheetFunction
  3.         [a1] = .Rept(1, 32767)
  4.         MsgBox .CountIf(Range("a:a"), "> ")
  5.     End With
  6. End Sub
复制代码
回复

使用道具 举报

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

第一个参数是range("a:a"),你把range()里的换成大于255的长度地址串试试
在excel里,定义名称不一定是单元格,也可以是常量,而都受255的限制,这里有了单元格了,肯定不再按range的长度计算,index第一个参数也可以是数组,这个数组也可能被认为是常量数组的名称
回复

使用道具 举报

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

那么test4 5里 index的第一个参数 arr 是常量数组,这个常量数组的名称不是 arr 吗?
回复

使用道具 举报

发表于 2011-7-21 16:59 | 显示全部楼层
本帖最后由 兰色幻想 于 2011-7-21 17:00 编辑
Zipall 发表于 2011-7-21 16:55
回复 兰色幻想 的帖子

那么test4 5里 index的第一个参数 arr 是常量数组,这个常量数组的名称不是 arr 吗?


arr只是变量名称,不是excel定义的名称

下面的ABC才是定义的名称

插入---名称-定义

名称:ABC
内容:={1,2,3,4}
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 04:14 , Processed in 0.265806 second(s), 6 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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