VBA,全称Visual Basic for Applications,其中的一些专业性的解释可以自行搜索,这里就不一一介绍。半年以前,我是不知道VBA的,当我听到VBA的时候,我却迷糊了。VBA是什么?和我学过的VB(当然,那个时候C语言都不会,何况是VB,基本不会.)有什么区别吗?难道又是一门很难的语言,功能很强大?

  总总问题在我脑海,然后,我把它抛开了,没有去管他。是的,没有看错,我没有去管他

  大概进过了半年左右的时间,也就是一个月前,当我还沉浸在粘贴复制,粘贴复制,无休止的操作中的时候,偶尔看到了一个令我惊讶的事情。打开一个文件,他会统计所有相关联的文件,然后把信息汇总,然后生成报告,然后,留下我吃惊的在那里。是那个时候,我突然意识到,VBA对于文档类还是非常重要的。(当然,目前我只了解这么点。)

  所以,从那后,我就开始学习VBA了。说是学习,其实也就花了几天时间看了一下书而已。

  以下是我关于VBA的一些基础性的总结,当然总结的层面仅限于我这个层次的水平,几天时间的看书而已,期间也弄了一些恶作剧的excel文件。好了,废话不多说了,开始了。

   一个链接:可以进去看一下。http://blog.163.com/xing_aixin/blog/static/37235505200837129771/

  1.变量

  学过C语言的知道有如下的几种类型:int,float,double,char,long,short等,既然是程序语言,先从变量类型开始。

  VBA的变量类型有:

汉语名 标识名
字符串型 String
字节型  Byte
布尔型 Boolean
整数型 Integer 
长整数型 Long
单精度型 Single
双精度型 Double
日期型 Date
货币型 Currency
小数点型 Decimal
变体型 Variant
可变对象型 Object

  当然还有一个用户自定义的。

  有兴趣的可以查看每种类型的适配用途,对应到用Excel哪里可以看到这些东西的影子,可以对着一个单元格,反剑一下,查看单元格属性,是不是看到有一些东西很熟悉?是的,你没有看错。当一个单元格数字的类型不同的时候,呈现的东西有可能是不同的,比如说,2015-03-29你将单元格属性设置为数字和设置为日期,在显示效果上会完全不同:一个是日期,一个是数字。那么那个数字有没有什么规则呢?小弟不才,看了半天都没看出个什么门道出来,只知道日期变大或变小会加一或减一,后来百度了才发现原来是和1900-01-00的天数(…………)

  当然,这里简单的说一下其中的区别。其中很多都和C语言中有很多相识的地方。当整数比较小时用byte,大的时候用integer,很大的时候就用long。(vba会自己变更大小写,当然只适用于这种关键字。。)一个数字已经上亿了,你说它大不大。一个班级的人数显然不会很大。一串英文那就是string了。

  号了,多的不扩展了,不会像一个int是4字节,一个byte是一字节那样,不懂可以去查。然后自己code体验一下。

  

  2.变量的声明

  很多语言同C一样,都是类型在前,变量名在后,就像这样

    限定符  VarType  VarName = VarValue;  //包括了初始化。

  在VBA中,变量的声明:

    限定符 Dim VarName As VarType = VarValue      ’Dim 变量名 as(是) 什么类型。

  其中限定符什么的,无非就是,这个变量表示的权利大小,美国的到哪里都可以,朝鲜的估计只有朝鲜的能够管管用了。

  当然,varType不止上面的那些东西,还有可以是好多东西。先暂时这样理解吧,(如果有面向对象的思想的话可以把那看作一个类,把变量看做一个对象。想想,确实可以这样理解,不是的么?)

  当然,其中也有一些简单的写法。小明是男人,也可以这样表示:小明,男(其中的一些符号%,$这些就不说了,有兴趣自己去了解)。表示方式不同,但解析的意思是一样,只要我们明白其中的含义就可以。

  3.过程和函数

  在VBA中,有sub过程和function函数。两者有什么区别么?我想应该是有的吧。

  过程,故名思意就是一个过程,具体是什么过程需要看具体的实现了。据说C语言就是过程式的。

  函数,同样的,从小到大不知道被多少函数折磨着,什么三角函数啊啥的,共同点有:有返回值,当然有参数。(当然,对比C语言的函数就不同了,话说C语言函数也是有返回值的。)

  一般,学习语言以前都会有很经典的一个hello world。用一个sub过程来蹦出一个hello world出来。

  代码如下:

  

 Sub vba_test()

    Msgbox "hello world" & chr() _

              &  "你好,世界!"            

End Sub

解释一下上面的各个东西:

msgbox : 类似于printf,什么printf不知道,好吧,你可以把它理解为一个话筒。我们听到的一个人话筒的声音是那个发音者的声音么?显然不是。发音者告诉话筒,我说什么,你就给我重复说什么。好吧。这只是一个呈现的方式。当然,也可以选择你说什么就打印出是没出来,siri就是这样的。(到后面你会发现msgbox远远不止这点东西。)

  作用,在屏幕上蹦出一个弹出框,对,就是你点广告一直会弹出来的那种东西。想了解点广告弹出,可以去了解html,javascript。

“”两个引号包括的,字符串。

chr(13) :换行 和\n什么的……

_  : 有时候是不是发觉一行写不完一个东西?好,txt也许不存在这个问题。当然,在C语言里面也有这种东西存在。 在C语言中是用的 \

//在宏定义的时候时候
//如果是一下的方式定义的
#define TEST1
#define TEST2 #ifndef TEST1
#define VBATEST(x) do{ x= x^2 }while(0)
#endif //看着不爽?,你也可以这样写
#ifndef TEST2
#define VBATEST(x) do{    \
x = x^; \
}while()
#endif
//有行数就是任性!!! //当然,你说可以这样写我也不怪你。
#ifdef TEST2
#define VBATEST(x) do{
             x = x^2;
            }while(0)
#endif

这个VBA中的  _ 和 这个 \  是一样一样的。

【2015-03-31】

浅谈VBA的更多相关文章

  1. VSTO学习笔记(九)浅谈Excel内容比较

    原文:VSTO学习笔记(九)浅谈Excel内容比较 说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够对基于文本的文件内容作出快速.准确的比较,有详 ...

  2. 浅谈 Fragment 生命周期

    版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/Fragment 文中如有纰漏,欢迎大家留言指出. Fragment 是在 Android 3.0 中 ...

  3. 浅谈 LayoutInflater

    浅谈 LayoutInflater 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 源码:AndroidDemo/View 文中如有纰漏,欢迎大家留言指出. 在 Android 的 ...

  4. 浅谈Java的throw与throws

    转载:http://blog.csdn.net/luoweifu/article/details/10721543 我进行了一些加工,不是本人原创但比原博主要更完善~ 浅谈Java异常 以前虽然知道一 ...

  5. 浅谈SQL注入风险 - 一个Login拿下Server

    前两天,带着学生们学习了简单的ASP.NET MVC,通过ADO.NET方式连接数据库,实现增删改查. 可能有一部分学生提前预习过,在我写登录SQL的时候,他们鄙视我说:“老师你这SQL有注入,随便都 ...

  6. 浅谈WebService的版本兼容性设计

    在现在大型的项目或者软件开发中,一般都会有很多种终端, PC端比如Winform.WebForm,移动端,比如各种Native客户端(iOS, Android, WP),Html5等,我们要满足以上所 ...

  7. 浅谈angular2+ionic2

    浅谈angular2+ionic2   前言: 不要用angular的语法去写angular2,有人说二者就像Java和JavaScript的区别.   1. 项目所用:angular2+ionic2 ...

  8. iOS开发之浅谈MVVM的架构设计与团队协作

    今天写这篇博客是想达到抛砖引玉的作用,想与大家交流一下思想,相互学习,博文中有不足之处还望大家批评指正.本篇博客的内容沿袭以往博客的风格,也是以干货为主,偶尔扯扯咸蛋(哈哈~不好好工作又开始发表博客啦 ...

  9. Linux特殊符号浅谈

    Linux特殊字符浅谈 我们经常跟键盘上面那些特殊符号比如(?.!.~...)打交道,其实在Linux有其独特的含义,大致可以分为三类:Linux特殊符号.通配符.正则表达式. Linux特殊符号又可 ...

随机推荐

  1. LDA(主题模型算法)

    LDA整体流程 先定义一些字母的含义: 文档集合D,topic集合T D中每个文档d看作一个单词序列< w1,w2,...,wn >,wi表示第i个单词,设d有n个单词.(LDA里面称之为 ...

  2. Foundation框架--字典( NSDictionary NSMutableDictionary )

    基础知识 1.字典不允许相同的key,但允许有相同的value. 2,字典是无序的,字典不能排序. 3.字典里的内容是成对存在的,不会出现单数. 4.快速创建的方式只适合不可变字典. 不可变字典 #i ...

  3. Flex布局语法与实践

    一.参考文献 阮一峰 Flex布局的语法 阮一峰 Flex布局的实践 二.Flex语法 (一)Flex是什么 Flex是Flexible Box的缩写,意为"弹性布局",用来为盒状 ...

  4. sky

    UniSky入门资料 http://game.ceeger.com/forum/read.php?tid=4069

  5. 捕获EF提交异常

    try { } catch (DbEntityValidationException dbex) { string errMsg = string.Empty; foreach (var eve in ...

  6. Effective Objective-C 2.0 — 第14条:理解“类对象“的用意

    每个实例都有一个指向Class 对象的指针,用以表明其类型,而这些 Class 对象则构成了类的继承体系. 如果对象类型无法在编译期确定,那么就应该使用类型信息查询方法来探知. 尽量使用类型信息查询方 ...

  7. Effective Objective-C 2.0 — 第四条:多用类型常量,少用#define预处理指令

    第四条:多用类型常量,少用#define预处理指令 使用#define 预处理的坏处:定义出来的常量没有类型信息,编译器只是会在编译前据此执行查找与替换操作.即使有人重新定义了常量值,编译器也不会产生 ...

  8. QT读写ini配置文件

        /********下面是写ini文件*************************/     //Qt中使用QSettings类读写ini文件     //QSettings构造函数的第一 ...

  9. Java读取txt文件,计算2011年9月份的通话时间

    public class test2 { /** * @param args * @throws IOException */ public static void main(String[] arg ...

  10. Thinkphp 模板中直接对数据处理 模板中使用函数 中文字符串截取

    1.Thinkphp 模板中直接对数据处理:{$data.name|substr=0,3} 2.中文字符串截取函数:mb_substr=0,14,'utf-8' 3.中文字符串统计:iconv_str ...