浅谈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) :换行 和\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^2;                    }while(0)#endif
//有行数就是任性!!!

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

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

【2015-03-31】

时间: 2024-10-20 07:02:34

浅谈VBA的相关文章

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

原文:VSTO学习笔记(九)浅谈Excel内容比较 说起文件内容比较,或许我们首先想到的是UltraCompare这类专业比较的软件,其功能非常强大,能够对基于文本的文件内容作出快速.准确的比较,有详细的差异报告,非常便于分析.其实,各种版本控制软件中也包含有或多或少的比较功能,如TFS.CVS.SVN等.但是如果待比较的文件不是基于文本类型的,那就无能为力了.今天我就来谈一谈Excel的比较方法及其特点,也和大家共同探讨一下,如果你有更好的方法,欢迎分享. 一.Excel的文件架构 Excel

.net中对象序列化技术浅谈

.net中对象序列化技术浅谈 2009-03-11 阅读2756评论2 序列化是将对象状态转换为可保持或传输的格式的过程.与序列化相对的是反序列化,它将流转换为对象.这两个过程结合起来,可以轻松地存储和传输数 据.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象.此外还可以将对象序列化后保存到本地,再次运行的时候可以从本地文件 中“恢复”对象到序列化之前的状态.在.net中有提供了几种序列化的方式:二进制序列化

浅谈——页面静态化

现在互联网发展越来越迅速,对网站的性能要求越来越高,也就是如何应对高并发量.像12306需要应付上亿人同时来抢票,淘宝双十一--所以,如何提高网站的性能,是做网站都需要考虑的. 首先网站性能优化的方面有很多:1,使用缓存,最传统的一级二级缓存:2,将服务和数据库分开,使用不同的服务器,分工更加明确,效率更加高:3,分布式,提供多台服务器,利用反向代理服务器nginx进行反向代理,将请求分散开来:4,数据库的读写分离,不同的数据库,将读操作和写操作分开,并实时同步即可:5,分布式缓存,使用memc

单页应用SEO浅谈

单页应用SEO浅谈 前言 单页应用(Single Page Application)越来越受web开发者欢迎,单页应用的体验可以模拟原生应用,一次开发,多端兼容.单页应用并不是一个全新发明的技术,而是随着互联网的发展,满足用户体验的一种综合技术. SEO 一直以来,搜索引擎优化(SEO)是开发者容易忽略的部分.SEO是针对搜索(Google.百度.雅虎搜索等)在技术细节上的优化,例如语义.搜索关键词与内容相关性.收录量.搜索排名等.SEO也是同行.市场竞争常用的的营销手段.Google.百度的搜

浅谈html标签

浅谈html各常用标签用法 标题标签:<h1>-<h6>来表示,使标题字体变粗. <br />换行标记 <hr />水平分隔符 &nbsp空格符 &copy版权符 <a href>a标签超链接 href可接链接地址 <p>段落标签<blockquote>引用标签及可用做缩进 <table>表格中的<ul>无序列表<ol>有序列表<dl>自定义列表<row

浅谈二维中的树状数组与线段树

一般来说,树状数组可以实现的东西线段树均可胜任,实际应用中也是如此.但是在二维中,线段树的操作变得太过复杂,更新子矩阵时第一维的lazy标记更是麻烦到不行. 但是树状数组在某些询问中又无法胜任,如最值等不符合区间减法的询问.此时就需要根据线段树与树状数组的优缺点来选择了. 做一下基本操作的对比,如下图. 因为线段树为自上向下更新,从而可以使用lazy标记使得矩阵的更新变的高校起来,几个不足就是代码长,代码长和代码长. 对于将将矩阵内元素变为某个值,因为树状数组自下向上更新,且要满足区间加法等限制

[nRF51822] 14、浅谈蓝牙低功耗(BLE)的几种常见的应用场景及架构(科普类干货)

蓝牙在短距离无线通信领域占据举足轻重的地位—— 从手机.平板.PC到车载设备, 到耳机.游戏手柄.音响.电视, 再到手环.电子秤.智能医疗器械(血糖仪.数字血压计.血气计.数字脉搏/心率监视器.数字体温计.耳温枪.皮肤水分计等), 再到智能家居等领域均占有一席之地. 而蓝牙低功耗(BLE)是在蓝牙4.0协议上修改以适用低功耗应用场景的一种蓝牙协议. 随着上一股智能消费类电子大潮的到来,BLE的各种应用也像雨后春笋般在市场上铺开. 如果想 紧跟蓝牙协议的最新动态 ,可以在https://www.b

浅谈C++容器动态内存管理的优化

在信息学竞赛中,C++的容器的用途非常广泛,但经常因常数过大而超时.怎样才能提高它们的效率呢? 我们知道,容器是存储同一类对象的对象,既然"对象"我们无法改变,那么我们只能从"存储"入手,不难想到,不同容器在实现上的根本区别是它们对应着不同的内存组织方式,内存管理无疑是这种实现的核心,所以优化内存管理是加快容器效率的最好途径之一. 一.内存分配器简介 怎样才能优化内存管理呢?很简单,C++为我们提供了这样的接口,我们可以通过自定义容器模板中的最后一个allocato

张小龙浅谈微信公众平台的意义

腾讯高级副总裁张小龙表示:微信公众平台,就是在移动互联网时代,让企业和个人以更简捷的形式提供服务给有需要的人. 张小龙浅谈微信公众平台的意义,布布扣,bubuko.com