设为首页收藏本站|繁體中文

Excel 技巧网

 找回密码
 注册

QQ登录

只需一步,快速开始

手机号码,快捷登录

查看: 12409|回复: 12

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

[复制链接]
发表于 2011-8-17 23:43:39 | 显示全部楼层 |阅读模式
  • 署名作者: xmyjk
  • 版权声明: 版权归本站与作者共有 除本站官方外非作者本人转载须经许可并注明出处
  • 本文来自:
  • 引用作品:
  • 适用版本: 2010 2007 2003以前版本 
  • 语言环境: 简体中文
  • 学习方法: 掌握Excel技巧的关键是动手操作 | 下载 ≠ 知识


  • 免费注册成为本站会员,享用更多功能,结识更多Office办公高手!

    您需要 登录 才可以下载或查看,没有帐号?注册

    x
    本帖最后由 xmyjk 于 2011-8-17 23:47 编辑

    一直以为,中括号([])在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)]

    评分

    参与人数 4技术分 +1 魅力值 +20 收起 理由
    chenlifeng + 1 + 5 善于总结,值得学习!
    bishunbiao + 5 思路巧妙:)
    0Mouse + 5 好东西!学习学习!:-)
    zm0115 + 5 新知识

    查看全部评分

    发表于 2011-8-18 08:06:37 | 显示全部楼层
    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%"}]
    第一次知道可以这么写。又让兄弟我学到了新东西,:)谢谢
    回复 支持 反对

    使用道具 举报

    发表于 2011-8-18 09:41:14 | 显示全部楼层
    []就相当于EVALUATE,不过弱一点。
    回复 支持 反对

    使用道具 举报

    发表于 2011-8-18 10:08:27 | 显示全部楼层
    抄一遍,呵呵!
    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.4 KB, 下载次数: 33)
    回复 支持 反对

    使用道具 举报

    发表于 2011-9-18 12:43:20 | 显示全部楼层
    []和EVALUATE一起学习了!
    回复 支持 反对

    使用道具 举报

    发表于 2012-3-14 22:40:23 | 显示全部楼层
    学习,谢谢分享!
    回复 支持 反对

    使用道具 举报

    发表于 2012-5-3 14:45:57 | 显示全部楼层
    学习
    回复 支持 反对

    使用道具 举报

    发表于 2013-11-14 00:06:49 | 显示全部楼层
    今天刚好学这个,不是很明白。学习一下。
    回复 支持 反对

    使用道具 举报

    发表于 2013-12-15 10:07:43 | 显示全部楼层
    不是很明白
    回复 支持 反对

    使用道具 举报

    发表于 2013-12-20 14:20:52 | 显示全部楼层
    []的表达方式不利于调试就是了。
    回复 支持 反对

    使用道具 举报

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

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    Excel技巧网的会员探讨问题仅代表其个人意见,与网站的立场无关。任何违反国家和地方相关法律法规的言论,本站有义务协助政府相关部门追究发言者的责任!
    本站中非注明转载文章与案例的版权为作者与Excel技巧网共有。若非原文作者,本站之外任何单位或个人未经允许,不得将其用于商业用途。
    若非原文作者,任何形式的非商业性转载必须获得Excel技巧网或作者允许,并注明作者和出处。
    会员发表的帖子如涉及版权纠纷,须自行负责。详情请参考注册时的网站服务条款。
    本站特聘法律顾问:沈学律师

    Archiver|手机版|Excel技巧网 ( 闽ICP备08107682号-2 ) | 闽公网安备 35020302032608号  

    GMT+8, 2018-7-23 11:49

    Powered by Discuz! X3.3

    © 2001-2017 Comsenz Inc.

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