• 浅谈VBA


      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(13) _
    
                  &  "你好,世界!"            
    
    End Sub

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

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

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

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

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

    _  : 有时候是不是发觉一行写不完一个东西?好,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^2;        
                }while(0)
    #endif
    //有行数就是任性!!!

    //当然,你说可以这样写我也不怪你。
    #ifdef TEST2
    #define VBATEST(x) do{
                 x = x^2;
                }while(0)
    #endif

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

    【2015-03-31】

  • 相关阅读:
    LeetCode 647. Palindromic Substrings
    jquery--find与children方法的区别
    JavaScript MVC框架PK:Angular、Backbone、CanJS与Ember
    javascript之原型prototype
    js的数据格式之json
    Javascript:必须知道的Javascript知识点之“单线程事件驱动”
    javascript自我测试题
    javascript:delete 删除对象的属性
    javascript:function 函数声明和函数表达式 详解
    [转]JavaScript可否多线程? 深入理解JavaScript定时机制
  • 原文地址:https://www.cnblogs.com/ply616/p/4376585.html
Copyright © 2020-2023  润新知