VBA的一些使用心得
VBA的知识比较零散,因此开一贴记录一下使用VBA时的一些方法和心得。主要针对Excel,参考在这里
1. Collection Class
大部分情况下,Collection Class是比数组(Array)更好的一个选择,使用也十分简单:
Sub test()
'Create
Dim names As New Collection
names.Add "Jack"
names.Add "Rose" 'Or
Dim phones As Collection
Set phones = New Collection phones.Add ""
phones.Add "" 'Access an Item
MsgBox names.Item()
MsgBox phones.Item() 'Count
MsgBox names.Count 'Remove
phones.Remove () 'Loop collection
For Each n In names
MsgBox n
Next
For Each n In phones
MsgBox n
Next End Sub
参考:http://msdn.microsoft.com/zh-cn/library/yb7y698k(v=vs.90).aspx
2. For Each 遍历数组时,For Each后跟的必须是Variant:
Sub test() Dim names() As String
Dim n As Variant 'This can't be String! Must be Vaiant names() = "Pre"
names() = "Jack"
names() = "Haha"
names() = "Rose" For Each n In names
MsgBox n
Next End Sub
参考:http://stackoverflow.com/questions/4228137/vba-for-each-on-an-array
3. Function与Sub的区别:
1) Sub 过程定义时无需定义返回值类型,而Function 过程一般需要用“As 数据类型” 定义函数返回值类型。
2) Sub 过程中没有对过程名赋值的语句,而Function 过程中一定有对函数名赋值的语句,一般在函数最后返回值,格式如下:
Set functionName = xxxxxx
3) 调用过程:调用 Sub 过程与 Function 过程不同。调用 Sub 过程的是一个独立的语句,而调用函数过程只是表达式的一部分。另外,自定义函数并不允许修改工作表和单元格格式 (A UDF will only return a value it won't allow you to change the properties of a cell/sheet/workbook. )。但是,与 Function过程一样,Sub 过程也可以修改传递给它们的任何变量的值。
4) 调用 Sub 过程有两种方法:
以下两个语句都调用了名为 MyProc 的 Sub 过程。
Call MyProc (FirstArgument, SecondArgument)
MyProc FirstArgument, SecondArgument
注意当使用 Call 语法时,参数必须在括号内。若省略 Call 关键字,则也必须省略参数两边的括号。
4. 遍历Dictionary
For Each strKey In oDic.Keys()
do_something
Next
5. Application.WorksheetFunction
调用Application.WorksheetFunction,可以在VBA中使用Excel已有的函数,例如Max,Min,Average等。常用的还有COUNTA这个函数:
Sub test()
MsgBox Range("A1:A10").Count 'Output 10
MsgBox Application.WorksheetFunction.CountA(Range("A1:A10")) 'Output 4 because 4 of 10 cells are not empty
End Sub
6.Standard Modules vs. Class Modules
面试曾被问到这题,之前的VBA全都是操作单元格为主,没想到还能面向对象。根据这里的定义,Standard Modules就像静态域,全局只有一个数据备份;而Class Modules就如普通的类,可以有多个对象,多个不同的数据备份。
7. Range.Offset和Range.Resize的返回值必须用set来引用。
如:
Set priceRange = priceRange.Resize(rowNum - , priceRange.Columns.Count) 'Set!!!
Set actRange = actRange.Offset(, -)
VBA的一些使用心得的更多相关文章
- Excel VBA业余爱好者心得及总结
我不是IT专业人士,而是一位医务工作者,当初学习Excel VBA时,是因为读研究生时的课题需要:实验仪器每天产生4个Word文件,每个文件有9个表格,总计近百个数据.为了对这些数据进行统计分析,则需 ...
- vba批量作图心得1
1.1:连续有几个图的时候,如果需要设置某一个图的横坐标标签隐藏,要注意将坐标轴标签属性和坐标轴曲线粗细的属性区分开来 1.2:PlotArea里面有left和insideLeft属性,结合两个可以控 ...
- VBA高效删除不连续多行
最近在搞VBA,在感叹Excel功能强大的同时,对于新接触的一门编程语言也很烦恼.很多基础的语法都要靠网上搜索.现总结一些学习到的心得. VBA高效删除不连续多行 在一个拥有几万条数据的Excel中, ...
- 我的MYSQL学习心得(一) 简单语法
我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- NoSql数据库使用半年后在设计上面的一些心得
NoSql数据库这个概念听闻许久了,也陆续看到很多公司和产品都在使用,优缺点似乎都被分析的清清楚楚.但我心里一直存有一个疑惑,它的出现究竟是为了解决什么问题? 这个疑惑非常大,为此我看了很多分析文章, ...
- 我的MYSQL学习心得(二) 数据类型宽度
我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(三) 查看字段长度
我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(四) 数据类型
我的MYSQL学习心得(四) 数据类型 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(五) 运 ...
- 我的MYSQL学习心得(五) 运算符
我的MYSQL学习心得(五) 运算符 我的MYSQL学习心得(一) 简单语法 我的MYSQL学习心得(二) 数据类型宽度 我的MYSQL学习心得(三) 查看字段长度 我的MYSQL学习心得(四) 数据 ...
随机推荐
- 网络开始---多线程---NSThread-01-基本使用(了解)(二)
#import "HMViewController.h" @interface HMViewController () @end @implementation HMViewCon ...
- CGContextRef使用简要教程
CGContextRef使用简要教程 Graphics Context是图形上下文,也可以理解为一块画布,我们可以在上面进行绘画操作,绘制完成后,将画布放到我们的view中显示即可,view看作是一个 ...
- Service的生命周期&Service绑定方法
服务的生命周期: 一.采用start的方式开启服务 生命周期如下: 开启服务: onCreate()--> onStartCommand() (onStart()过时了)---> onDe ...
- XCode的代码块备份
以上三个的注释可以从下面的代码依据个数拷贝和删除: /** * <#comment#> * * @param <#one#> * * @param <#two#> ...
- android基础开发之scrollview
scrollView 是android系统提供的一种 特殊的展示view. 其实我们很早就遇到过scrollview的东东,比如listview. 而google官方文档也提出,不要混合使用scrol ...
- PS网页设计教程XXV——使用Photoshop设计的老式组合布局
作为编码者,美工基础是偏弱的.我们可以参考一些成熟的网页PS教程,提高自身的设计能力.套用一句话,“熟读唐诗三百首,不会作诗也会吟”. 本系列的教程来源于网上的PS教程,都是国外的,全英文的.本人尝试 ...
- springMVC 接收数组参数,mybatis 接收数组参数,mybatis批量插入/批量删除案例
案例是给一个用户赋予多个权限,多个权限用其对应的主键 id 为参数,组成了 一个id数组,传给springMVC,然后springMVC传给mybatis,然后mybatis批量插入.其实类似的场景还 ...
- php多线程pthreads的安装与使用
安装Pthreads 基本上需要重新编译PHP,加上 --enable-maintainer-zts 参数,但是用这个文档很少:bug会很多很有很多意想不到的问题,生成环境上只能呵呵了,所以这个东西玩 ...
- 【mysql】关于IO/内存方面的一些优化
这里使用的是mysql Ver 14.14 Distrib 5.6.19, for Linux (i686) using EditLine wrapper 一.mysql目录文件 ibdata1: ...
- windows 下my.ini的配置优化
线上有若干WIN环境下的MySQL,需要进行优化配置,列出以下参数方便查阅 # For advice on how to change settings please see # http://dev ...