office_Excel_VBA_入门教程
VBA,他有什么能耐?我们为什么要学习他?是不是真的“除了不会生孩子外,什么都会”?
不是的,什么都不会是万能的,“寸有所长,尺有所短”。个人常讲的:从A处到B处,步行、乘汽车、乘火车、乘飞机一个比一个先进、一个比一个优越,当A是成都B是北京时肯定如此,然而A和B是一个家属院的两幢楼时大约就不是这样了吧?哪么我们在什么时候使用他?个人认为有以下情况时我们可以考虑看能否用VBA解决:
当我们仅仅在电脑上从事机械的、重复的简单的体力劳动的时候;
当我们在表格中写入的函数太多而致使改动一个数据,去泡了一杯茶过来电脑都还没有运算完的时候;
当我们需要在不同的文件间进行数据交换的时候;
当我们需要进行实时监控的时候
…
…
总之就是我们用电脑解决一些有规律的,我们用函数、技巧解决起来却很麻烦,或很耗时,或不太好解决甚至不能解决的问题,就可以考虑用VBA能否方便快捷地完成。
那么VBA难吗?看到的VBA代码都是些鸟文,俺不懂鸟文,能学会吗?
VBA难,担不会比E中的函数难,能学会E中的函数的人都应该能学会V,并且绝对比用E中的数组公式简单。懂不懂鸟文与学得会学不会V关系不大,不会有多少人E中的每个函数都能默写出来吧?对E中的函数我是仅仅记住了常用的那几个,其余的要用到时再到帮助中去。V同样如此,有时整段整段的代码都来自帮助,稍改下就成了自己的了
在进入下面的学习以前,请暂时忘掉你原有的excel函数、技巧等等吧。此贴是为完全不懂VBA、完全不懂程序设计的人而写的,否则还是请绕道,他会浪费你很多时间和精力。学VBA的要点是动手动脑,然后是再动手动脑,最后还是动手动脑。这里的动手,是指录入代码(哪怕是照抄别人的,都得自己手录入,而绝不能复制粘贴)、改代码( 阅读理解别人代码的基础上进行功能改、扩等的改写)、写代码;动脑除了常规意义上的思考等以
外,此处还包括阅读理解程序,阅读的时候大脑模拟电脑执行过程,要知道每到一处的时候各变量、参数的值是什么、处于何种状态。
------------------------------分-------界-------线----------------------------
VBA程序设计程序设计的基础知识:
一、计算机解决问题的步骤
计算机解决问题的步骤:一般来说,在运用计算机程序解决一个具体的实际问题时,大致经过以下几个步骤:
首先建模:分析问题,从具体问题中出一个适当的数学模型
其次确定算法:然后设计一个解决数学模型的算法,
最后编制程序并进行测试调整,直到得出最终答案。
由于每一步不见得都能得到正确的方向,所以在每一步都可能返回到前一步甚至前几步。图形如下:
可见建立的模型不同(整得这么神秘,什么建模了、算法了,其实就我们对问题的想法,完成问题的具体步骤),最终编制出来的程序也就不同。
我们先来看一个经典的问(鸡兔同笼问题):有若干只鸡兔同在一个笼子里,从上面数,有35个头;从下面数,有94只脚。问笼中各有几只鸡和兔?
分析一:设兔子的数量为X,则鸡的数量为35-X,那么脚的数目就为4X+2(35-X)。我们就可以让X从0开始逐步增加,只要使4X+2(35-X)=94,就得到了兔子和鸡的数目。这就是所谓的建模。
确定算法:
①输入头的数目a,脚的数目b
②x= 0
③如果4X+2(a-X)不等于b,则x增加1,重复③;否则进入④
④输出兔子的数量X,则鸡的数量35-X
⑤结束
Sub jttl()
Dim a AsInteger, b As Integer
Dim x AsInteger
a =InputBox("a=", "请输入头的数目")
b = InputBox("b=","请输入脚的数目")
x = 0
Do Until 4 *x + 2 * (a - x) = b
x = x + 1
Loop
MsgBox "有兔" & x & "只,有鸡" & 35 - x & "只"
End Sub
分析二(换一个思路,另建个模):设兔子的数量为X,鸡的数量为Y,头的数目为a,脚的数目为b,则有X+Y=a,4X+2Y=b,解方程组可得X=b/2-a,Y=2a-b/2
确定算法:
①输入a和b的值
②计算x= b/2-a
③计算y=2a-b/2
④输出x、y的值
⑤结束
编制程序:
Sub jttl ()
Dim a As Integer, b As Integer
dim x As Integer, y As Integer
a =InputBox("a=", "请输入头的数目")
b =InputBox("b=", "请输入脚的数目")
x = b / 2 - a
vba编程技巧y = 2 * a - b/ 2
MsgBox "有兔" & x & "只,有鸡" & y & "只"
End Sub
以上的程序可以暂时不必搞清楚(后面我们还要讲此例),只是体现出看待问题的角度不同就有不同的算法,相应的程序也是不同的。同时也反应出程序实际就是一组机器操作的指令或语句的序列,是对算法(解决问题的步骤)的一种描述而已。因此编程就是将算法
(解决问题的步骤)翻译成对应的代码,只是注意算法的每一个步骤对应着一个或多个语句,每个语句对应着一个或多个操作。
二、VBA语言及开发环境
(一)vba语言概述
由前示例可看出,VBA程序由一条条的语句构成,这些语句大体上可以分为(如下图):
①开始/结束:必须有的,表明程序的开始与结束。Sub是必须的(当然还有function等等,以后遇到再说)。Sub后面是我们给程序的命的名称(此处为jttl,也可以命名为其它,但必须要符合命名规则,命名规则后面讲)。End Sub是自动产生的。
②变量定义:Dim 变量名 as 数据类型,有多个变量要定义时用,分开。一般都具备,但还是要看具体情况而定。
③数据输入/数据输出:输入是给程序某些信息以供运行所需,可以从键盘输入,也可以从文件、扫描仪、鼠标等等一切可以输入数据的途径,它不是必须的,这要看具体情况而定;
输出是将程序运行的结果反馈给我们,它是广义的:向显示屏上输出提示信息、向音箱输出信息、向打印机输出信息、向文件输出信息等等,一般来说每个程序都应具备。
④数据处理:我们希望计算机对数据进行的运算、处理等等。
-------------------------------------------------------------------------
1、vba的基本数据类型
描述客观事物的数、字符以及所有能输入到计算机中并被计算机程序加工处理的符号的集合统称为数据。数据既可以是计算机程序处理的对象,也可以是计算机程序处理的结果。为了更好地处理各种数据,vba定义了多种数据类型(书上是这么讲的,大家可以牵强地参照单元格数据类型中的数值、日期、时间、文本等来类似理解),以下介绍几种常用的基本数据类型:
整数:Byte存储为单精度型、无符号整型、8 位(1个字节)的数值形式,范围在 0 至255 之间。Byte 数据类型在存储二进制数据时很有用
integer存储为 16位(2 个字节)的数值形式,其范围为-32768至32767的所有整数,类型声明字符是百分比符号(%)。即dim I as integer 与dimi%等效。下同
long存储为 32 位(4 个字节)有符号的数值形式,其范围从-2,147,483,648 到 2,147,483,647的所有整数。类型声明字符为和号 (&)。
小数:single存储为 IEEE 32 位(4 个字节)浮点数值的形式,它的范围在负数的时候是从 -3.402823E38 到 -1.401298E-45,而在正数的时候是从 1.401298E-45 到 3.402823E38。但它只有七位有效数字。Single 的类型声明字符为感叹号 (!)。
double存储为 IEEE 64 位(8 个字节)浮点数值的形式,它能表示绝对值小于10308的数。有十五位有效数字。Double 的类型声明字符是数字符号 (#)。
字符串:string有两种:变长(最多可包含大约 20 亿 ( 2^31)个字符)与定长(可包含 1 到大约 64K ( 2^16 ) 个字符)。 String 之字符码的范围是 0 到255。字符集的前 128 个字符(0 到 127)对应于标准的 U.S. 键盘上的字符与符号。这前 128 个字符与 ASCII 字符集中所定义的相同。后128 个字符(128 到 255)则代表特殊字符,例如国际字符,重音符号,货币符号及分数。String 的类型声明字符为美元号 ($)。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论