一 EXCEL和VBA的3种函数

1.1 EXCEL和VBA

  • VBA是寄生在EXCEL里的
  • VBA有自己的原生函数   VBA.
  • VBA的Application===EXCEL,本身各有很多各种函数。

 

1.2 VBA涉及的函数种类

1.2.1 第1类: VBA函数

  • VBA的函数: VBA内置函数,用户自定义函数: 
  • 写法可以省略vba.                     
  • VBA.trim()
  • trim()

 

1.2.2 第2类,Application下的函数

  • EXCEL对象(Application对象) 函数: 内置工作表函数,内置数组公式:   
  • 基本上Application后面可以跟所有的Excel函数,而application.workfunction则不能。
  • 写法只有1种
  • Application.
  • 如application.match

 

1.2.3 第3大类,Application.worksheetfunction ,Application下工作表函数的再封装

  • Application.worksheetfunction.  只有一部分函数可用
  • 具体写法,可以省略application,不能省略 worksheetfunction.
  • Application.worksheetfunction. 
  • worksheetfunction.

 

1.2.4 三者的关系

 

1.2.5 差别举例

下面2个函数,用起来是不一样的

Sub test_ponyma1()

'这2个函数居然不一样,待查
Debug.Print Application.Match(1, Range("a1:a10"))
'Debug.Print WorksheetFunction.Match(1, Range("a1:a10"))

End Sub

 

1.2.6 其他函数:如EXCEL表用的公式,自定义函数等等

  • 其他函数1: EXCEL公式
  • EXCEL工作表函数:工作表函数,数组公式等
  • 只能在EXCEL,公式时用

 

  • 其他函数2:自定义函数
  • 自己写的,可以用在VBA里,还可以用在EXCEL里直接使用 ,如在EXCEL里输入 = func1()

 

二 几种函数语法和使用范围

2.1 VBA函数和 worksheetfunction 同名函数,实际是完全不同的函数,一般功能不同

比如

  • vba.trim()   或 trim()            只去掉头尾的空格
  • Application.trim()                会去掉字符串中间的空格,只保留1个

 

2.2 VBA函数写法

  • Vba函数语法
  • 写法1:trim()
  • 写法2:VBA.trim()
  • 例子
  • 如 Cells(1,1)=round(range(“c1”),0)

 

2.3 VBA函数特点?

  • 不能直接修改EXCEL单元格里的值?

 

2.4 封装层数越少,效率越高, 更应该用 Application.

参考资料:https://zhidao.baidu.com/question/1496170563121388179.html

1层封装 application.

  • application.trim()
  • 运行速度更快
  • 而且application. 函数比 worksheetfunction 封装的内置函数更多
  • 这么说,更应该用  application.trim()

 

2层封装(中间包了worksheet层)

  • Application.worksheetfunction.trim()
  • worksheetfunction.trim()
  • 多一个封装,那么运行所耗的时间也要长一些。

 

2.5 工作表函数特点和使用范围

  • worksheetfunction 只能针对1个单元格?
  • worksheetfunction 能用数组公式吗?这个应该是针对多单元格的

 

2.6 实测

  • msgbox(Application)
  • application.worksheetfunction.counta(range("a:a"))
  • application.sum(range("a:a"))
  • application.sum([a;a])
  • application.sum(indirect("a1"))

错误写法

  • application.worksheetfunction.counta(a:a)
  • application.worksheetfunction.counta("a:a")
  • application.sum(a;a)
  • application.sum("a;a")
  • application.sum("a1")

 

三 资料:几类函数大全

3.1 VBA函数

这个帖子总结了很多VBA函数

https://blog.csdn.net/cactusz/article/details/74561682

 

3.2 工作表函数

http://blog.sina.com.cn/s/blog_4084a6160101nra0.html

 

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐