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. CentOS7搭建hadoop2.6.4双节点集群

    环境: CentOS7+SunJDK1.8@VMware12. NameNode虚拟机节点主机名:master,IP规划:192.168.23.101,职责:Name node,Secondary n ...

  2. bs4_2

     QQ:231469242 欢迎交流 Parsing HTML with the BeautifulSoup Module Beautiful Soup是用于提取HTML网页信息的模板,Beautif ...

  3. Jetty 简单使用

    Jetty与Tomcat类似,也是一种Servlet引擎,可以用来运行Java Web项目. 其常被嵌入到项目中,以便于开发.测试,以及Demo等项目的运行. 1.作为插件——作为开发.测试时项目运行 ...

  4. C#中导入Win32 API函数

    C#中导入Win32 API的方法: 1.引用命名空间 using System.Net.Security; using System.Runtime.InteropServices; 2. [Dll ...

  5. JS通过getBoundingClientRect获取的height可能与css设置的height不一致

    发现如果DOM元素有padding-top或者padding-bottom值时, $(dom).height() = dom.style.display + padding-top + padding ...

  6. eshop截取字符串长度 和去掉省略号

    <!-- {if $goods.goods_brief} --> {$goods.goods_brief|truncate:17}<!-- {/if} --> 去掉省略号: 找 ...

  7. Linux下的压缩解压缩命令详解

    linux zip命令zip -r myfile.zip ./*将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzipunzip -o - ...

  8. .net mvc web api 返回 json 内容,过滤值为null的属性

    原文:http://blog.csdn.net/xxj_jing/article/details/49508557 版权声明:本文为博主原创文章,未经博主允许不得转载. .net mvc web ap ...

  9. thinkphp 3.2视图里添加URL参数 实例

    使用TP的时候URL传参 到控制器里 视图里 <ul> <volist name="content" id="data"> <li ...

  10. css居中总结

    水平居中 1. inline和inline-*元素水平居中:text-align:center 2. block元素水平居中: block定宽:margin-left: auto; margin-ri ...