美文网首页刺猬教你量化投资
刺猬教你量化投资(九):VBA编程入门

刺猬教你量化投资(九):VBA编程入门

作者: 刺猬偷腥 | 来源:发表于2018-01-04 17:07 被阅读143次
    VBA编程入门

    VBA语言能帮助我们方便地将投资想法转化为便捷的模型,并且大大降低数据处理的工作量,因此掌握VBA的基本运用方法,对提高金融建模效率大有益处。

    学习VBA的理由

    1. 解决重复工作或运算的问题
    2. 做成分析产品给别人用
    3. 提高建模效率,包括设置自定义函数及设置宏,宏是子过程的 意思(Macros or subroutines)。自定义函数要自己输入变量值,宏的input已内嵌在表格中。
    4. 操作简单,可以录制宏,自动将重复性的操作变成代码,门槛低。录制完后打开VBA编辑界面,快捷键是Alt+F11,即可看到转换后的代码。
    比如三个数求和的宏

    写好宏后可以插入快捷按钮,快捷键是Alt+L+I+B

    插入运行宏的快捷按钮

    面向对象的语言

    面向对象的意思是VBA通过对每一个对象进行处理,从而实现我们想要的功能。对象是集合的概念,例如workbooks就包括了已打开的工作簿,而worksheets包括了打开的工作表。通常将“.”翻译为"的",将“=”翻译为“是”,例如application.workbooks("xxx.xls").sheets("raw_data").range("cash").value=1000可翻译为应用的xxx.xls工作簿的raw_data表中cash栏的值是1000。

    还可以加上行为的命令,例如:
    range("cash").select 选择
    range("cash").copy 复制
    range("cash").formular="=A1" 对单元格写入公式
    sheets("raw_data").delete 删除表

    程序的结构

    一段程序包含三个部分,分别是开头、内容、结尾
    新增宏的开头格式为Sub+子过程名称()
    新增自定义函数的开头格式为public function 函数名()

    VBA的编写基本格式

    在内容部分,包含了三种运行结构,分别是顺序执行,逻辑判断以及循环执行。

    以循环执行为例,新增一段计算阶乘的代码:

    输入VBA代码 询问输入变量 得到阶乘运算的结果

    这个例子中用了带计数器的循环结构,还有条件循环的格式,用Do While....Loop语句来实现。

    编程的要素

    1. 声明变量

    程序中存在着许多变量,有些属于自定义的变量。在使用自定义变量之前,需要用Dim作声明,告诉程序以下这些变量是变量。后面加上as还可以指定变量的类型,例如:

    Dim abc as Interger
    告诉程序:abc变量是整数型变量。
    Dim abc as Interger,cba as variant
    告诉程序:abc是整数型变量,cba不知道是什么类型,但也是个变量。

    为了防止遗漏声明,可以在模块页的第一行加上“Option Explicit”,如果程序中没有定义好变量就会报错,出错的地方会高亮提示,改正后即可。

    1. 数组变量

    变量可以是向量array或者矩阵matrix,给它们定义一个名称即为数组。数组可以是一维,也可以是多维,在使用之前也需要用Dim进行声明。对于数组,数组名后面要加上括号()。

    1. 调用内置函数

    在VBA的编程中,可以调用Excel的内置函数进行运算,格式为Application.函数名()。以求阶乘为例,可写成Application.Fact(jc)。

    对于多维数组来说,声明的时候需要定义好维度,例如一维数组写成Dim yiwei(5),多维数组写成Dim duowei(3,5)。由于VBA默认从0开始编号,yiwei(5)表示包含6个数字,duowei(3,5)则表示4行6列的数组。如果要从1开始算,则需要在模块页的第一行加上“Option Base 1”。一般情况下都从1开始比较方便,但做二叉树运算的时候要从0开始。

    1. 定义动态数组

    有时候不知道数组包含数字的个数,这时候可以先Dim一个数组变量,但括号留空。然后知道数组的格式化,再用ReDim进行重定义。
    例如:
    Dim n, shuzu()
    n=3
    ReDim shuzu(n)
    于是,shuzu()就变成了一个含有四个数字的向量。

    结语

    通过以上学习,我们掌握了VBA最基础的知识。下一章我们将运用这些知识来解决投资上的一些实际问题,将复杂的运算问题瞬间变成一碟小菜,敬请期待。


    刺猬偷腥
    2018年1月4日


    to be continued.

    相关文章

      网友评论

        本文标题:刺猬教你量化投资(九):VBA编程入门

        本文链接:https://www.haomeiwen.com/subject/gcbknxtx.html