ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > E文精选 > Excel VBA > 关于VBA中EVALUATE或“[]”的用法的一些思考

关于VBA中EVALUATE或“[]”的用法的一些思考

作者:绿色风 分类: 时间:2022-08-17 浏览:733
楼主
xmyjk
一直以为,中括号([])在VBA里面的作用,就是RANGE("XX")cells(a,b)的简写





查了下VBA2007参考大全,[名称]可以用来引用工作表的自定义名称,将自定义名称的单元格进行引用。

昨天在网上翻资料,发现还可以,数组的简单运算:
  1. arr=[A1:B3+100]


以及像EVALUATE一样引用工作表函数(Evaluate("Sum(A1:A3)")),
  1. [a1] = [sum(A1:A3)]
个人觉得,[**]的用法和EVALUATE("**"),更像是VBA的内置工作表的自定义名称的函数,[**]先将**在内存中生成自定义名称,再将自定义名称中的数字或者数组进行赋值运用



举个例子,

如,工作表1的第一行是动态的,其列是不固定的,如果我们要将其赋值给数组arr(),怎么做呢

函数的做法可以自定义名称ABC(公式为OFFSET(Sheet1!$A$1,0,0,,COUNTA(Sheet1!$1:$1))+0),然后VBA里面,
  1. arr() = [ABC]
但是,更为简便的做法可以直接:
  1. arr() = [OFFSET(Sheet1!$A$1,0,0,,COUNTA(Sheet1!$1:$1))+0]
可以直接引用工作表函数,不用APPLICATION.OFFSET去做。

顺便分享我查到的资料,[]或EVALUATE用法:
1、引用常量数组
例:arr = [{0,"1%";10001,"2%";25001,"4%";50001,"5%";80001,"6.50%";100000,"7%"}]

2、引用单元格区域
例:[A1]、[A1:C3]

3、作为like函数里的字符串模板序列
例:if string like "[a-Z]" then

4、数组的简单运算
例:arr=[A1:B3+100]

5、引用工作表函数
例:[B1] = [sum(A1:A3)]
2楼
zm0115
arr() = [OFFSET(Sheet1!$A$1,0,0,,COUNTA(Sheet1!$1:$1))+0]
arr = [{0,"1%";10001,"2%";25001,"4%";50001,"5%";80001,"6.50%";100000,"7%"}]
第一次知道可以这么写。又让兄弟我学到了新东西,:)谢谢
3楼
liuguansky
[]就相当于EVALUATE,不过弱一点。
4楼
0Mouse
抄一遍,呵呵!
1:
  1. [A4]=[SUM(A1:A3)]

2:
  1. [A4]=Evaluate("SUM(A1:A3)")

3:
  1. [A4]="=SUM(A1:A3)"

1、2等价,返回值;3返回结果相同,但是在A4内输入了公式。
附件:

中括号引用公式.rar
5楼
CheryBTL
[]和EVALUATE一起学习了!
6楼
bluexuemei
学习,谢谢分享!
7楼
越甲三千188
学习
8楼
笑眼晴天
今天刚好学这个,不是很明白。学习一下。
9楼
mmice
不是很明白
10楼
水星钓鱼
[]的表达方式不利于调试就是了。
11楼
lrlxxqxa

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap