VBE教程
excel中VBE的使用方法VBE的七个常用窗口的用途
excel中VBE的使⽤⽅法VBE的七个常⽤窗⼝的⽤途VBE——Visual Basic Edirtor,如果⼤家对微软的⼀门编程语⾔有所了解的话,那对VBE的样⼦也就不会陌⽣的。
那怎么进⼊VBE呢?从Excel菜单中,选择⼯具——宏——Visual Basic 编辑器,或者按快捷键Alt+F11即可进⼊,不少朋友可能都没有接触过VBE,甚⾄连Excel中包含这个编辑器都⼀⽆所知,下⾯这张图就展现出VBE最常⽤的七个窗⼝,⽽图⽚也让这⼏个窗⼝更容易说明。
VBE的七个常⽤窗⼝的⽤途上个⽂章已⽤图⽚给出了七个常⽤窗⼝的图⽚,图⽚中可以很清楚地看到对应的菜单与⼯具栏所在的位置,从视觉是认识这七个窗⼝,下⾯内容也就好说明⼀点。
如果有编程经历的朋友,可以不⽤我说明就可以知道这些窗⼝的⽤途,现在就⼀⼀说下下⽤途:1、代码窗⼝。
从字⾯上就可以知道,就是在这⾥写VBA的代码的,也就是在这⾥查看代码的。
2、对象窗⼝。
可以在这⾥设定窗体的界⾯(如果你使⽤了窗体的话),在这⾥能很直观地设定窗体各个控件的布局。
3、对象浏览器。
在这⾥可以查看所有对象库、特定对象或你⾃⼰的⼯程,包括所有的对象的列表与每个对象的成员列表。
4、⼯程资源管理器。
在这⾥,我们可以很⽅便地管理⼯程中的模块、类模块与窗体,还可以很容量地在代码与对象间切换。
5、属性窗⼝。
可以说这是⼀个万能的窗⼝,在这⾥可以很简单地设定很多对象相关的属性,简单到只要⽤⿏标选择即可。
6、⼯具箱。
在插⼊窗体后,可以从⼯具箱添加各种控件。
7、⽴即窗⼝。
这个窗⼝可能很多朋友都没有使⽤过,所以多说两句,其三个主要⼯作是:(1)在开发过程中,⽤Debug.Print输出的内容就在此显⽰。
(2)当代码是Break模式时,查看对象和变量的状态。
(3)⽤?加上语句,就可以看到运⾏的结果,在很多情况下⽐⽤msgbox报出⽅便多了。
VBE操作
退格\backspace 开启摄像机所在楼层平面图 shift ctrl alt F3 F5 F8 Esc Esc\set设置 Esc\图层 快速移动 慢速移动 下蹲键(在行走模式下有效) 开启阳光阴影, 截屏(bmp格式图片) 开启平行试图、环绕全局视图效果 菜单、退出 常用为调节太阳亮度(开启F3时可用,标准40、投影时可将亮度适 当调高)、速度(标准20-60、地形展示350以上为佳) 控制图层显示或隐藏
Байду номын сангаасVBE 操 作 指 南
按键 w、s、a、d 方向键 鼠标 F O M I U Y\pgup上页 H\pgdn下页 空格 移动 移动 方向 飞行(可穿越模型)、行走模式切换 开启线框模式,方便查看模型的轮廓线 测量工具,用于视窗中测量两点之间的距离 查看模型信息(图层、大小、体积等),在不明确模型图层时可用 帧信息,不常用 镜头上升 镜头下降 跳跃(在行走模式下有效) 作用
2.1 VBE的基本操作
EXCEL VBA
编程入门
二、VBE的打开方法
方法一:按【Alt+F11】组合键;
方法二:单击【Visual Basic】工具栏中的【Visual Basic编辑器】按钮;
方法三: 依次执行【工具】→【宏】→ 【Visual Basic编辑器】菜单命令;
方法四:右键单击工作表标签,执行【查看代码】菜单命令。
EXCEL VBA
编程入门
三、VBE各窗口介绍
【操作动画演示】
浙江省普通高中选修课网络课程
方法五:单击【控件工具箱】中的“查看代码”按钮
方法六:利用【控件工具箱】建一个ActiveX控件,双击控件打开VBE窗口
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
三、VBE各窗口介绍
【工程资源管理器】
工程资源管理器与操作系统中的资源
管理器非常类似。 在【工程资源管理器】中可以看到所
有打开的Excel工作簿和已加载的加载宏,
一个Excel的工作簿就是一个工程,工程 名称为“VBA Project(工作簿名称)” 。
【工程资源管理器】中最多可以显示
工程里的4类对象,即Excel对象(包括 Sheet对象和ThisWorkbook对象)、窗
体对象、模块对象和类模块对象。
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
EXCEL VBA
编程入门
第二章:开始Excel VBA编程
2.1 VBE的基本操作
浙江省普通高中选修课网络课程
EXCEL VBA
编程入门
一、VBE介绍
VBE ,Visual Basice Editor的缩写。 VBE相当于一个VB IDE环境,在这里可以进行VBA可视化开发。
excel2010 vba笔记 (实战教程)(基础实例)
VBA笔记8-211.VBA是什么:微软开发出来的应用程序一种能共享通用的自动化语言,VBA能使已有的应用程序(excel等)自动化,可以创建自定义的解决方案.等同:可以用excel的宏语言来使excel自动化,使用word BASIC使word自动化,等等。
VBA可以称作excel的“遥控器”.此外,如果你愿意,还可以将excel用做开发平台实现应用程序.2.VBA可以实现的功能1. 使重复的任务自动化.2. 自定义excel工具栏,菜单和界面.3. 简化模板的使用.4. 自定义excel,使其成为开发平台.5. 创建报表.6. 对数据进行复杂的操作和分析.3.宏3.1录制简单的宏选择“工具”—“宏”—“录制新宏”—输入宏名—确定—开始录制(状态栏中显示“录制”)—结束宏录制(“工具”—“宏”—“停止录制”。
)*开始录制并非一个按钮,而是你的一系列操作,宏会记录下来变为自己的操作。
3.2执行宏选择任何一个单元格—选择“工具”—“宏”—“宏”(出现“宏”对话框)—选择相应的宏名—“执行”。
3.3查看录制的代码工具”—“宏”—“宏”(显示“宏”对话框)—选择某个宏—“编辑”VBA的编辑器窗口(VBE)Sub 改变颜色() //宏名’’改变颜色Macro’xw 记录的宏2000-6-10’’//以上五行录制时自动生成Range("A5").Select //表示无论选择哪个单元格,最后都只作用于A5With Selection.Interior//设置属性在选择区域的内部(开始录制属性).ColorIndex = 3 //颜色为3号色:红色.Pattern = xlSolid //区域内部图案=纯色(录制时自动生成,可删)PatternColorIndex = xlAutomatic //内部图案底纹颜色=自动(自动生成,可删)End With //结束属性录制End Sub//结束宏录制一个名为练习的宏:Sub 练习()'' 练习宏''With Selection.Borders(xlEdgeLeft).LineStyle = xlContinuous.ColorIndex = 0.TintAndShade = 0.Weight = xlMediumEnd WithWith Selection.Borders(xlEdgeTop).LineStyle = xlContinuous.ColorIndex = 0.TintAndShade = 0.Weight = xlMediumEnd WithWith Selection.Borders(xlEdgeBottom).LineStyle = xlContinuous.ColorIndex = 0.TintAndShade = 0.Weight = xlMediumEnd WithWith Selection.Borders(xlEdgeRight).LineStyle = xlContinuous.ColorIndex = 0.TintAndShade = 0.Weight = xlMediumEnd WithSelection.Borders(xlInsideVertical).LineStyle = xlNoneSelection.Borders(xlInsideHorizontal).LineStyle = xlNoneWith Selection.Interior.Pattern = xlSolid.PatternColorIndex = xlAutomatic.Color = 5296274.TintAndShade = 0.PatternTintAndShade = 0End WithWith Selection.Font.Color = -16727809.TintAndShade = 0End WithEnd Sub3.4为宏指定快捷键创建宏时指定:只须在录制宏时在输入宏名后,在“快捷键”文本框中输入相应的键。
Excelvba入门教学教程
VBA 入门系列讲座1.1 VBA 是什么直到90年代早期,使应用程序自动化还是充满挑战性的领域.对每个需要自动 化的应用程序,人们不得不学习一种不同的自动化语言.例如:可以用excel 的宏语 言来使excel 自动化,使用word BASIC 使word 自动化,等等.微软决定让它开发出 来的应用程序共享一种通用的自动化语言 -------------------------- V isual Basic For Application (VBA ),可以认为VBA 是非常流行的应用程序开发语言 VASUALBASIC 的子集.实际上VBA 是”寄生于”VB 应用程序的版本.VBA 和VB 的区别包 括如下几个方面:VB 是设计用于创建标准的应用程序,而VBA 是使已有的应用程序(excel等)自动化VB 具有自己的开发环境,而VBA 必须寄生于已有的应用程序.要运行VB 开发的应用程序,用户不必安装VB,因为VB 开发出的应用程 序是可执行文件(*.EXE ),而VBA 开发的程序必须依赖于它的”父”应用 程序,例如excel.尽管存在这些不同,VBA 和VB 在结构上仍然十分相似.事实上,如果你已经了 解了 VB,会发现学习VBA 非常快.相应的,学完VBA 会给学习VB 打下坚实的基 础.而且,当学会在excel 中用VBA 创建解决方案后,即已具备在 word access OUTLOOK FOX PRO P ROWER POINT 中用VBA 创建解决方案的大部分知识.VBA 一个关键特征是你所学的知识在微软的一些产品中可以相互转化.VBA 可以称作excel 的“遥控器”. VBA 究竟是什么?更确切地讲,它是一种自动化语言,它可以使常用的程序自动 化,可以创建自定义的解决方案.此外,如果你愿意,还可以将excel 用做开发平台实现应用程序.1.2 Excel 环境中基于应用程序自动化的优点也许你想知道VBA 可以干什么?使用VBA 可以实现的功能包括:使重复的任务自动化.自定义excel 工具栏,菜单和界面. 简化模板的使用.自定义exceI 使其成为开发平台. 创建报表.对数据进行复杂的操作和分析.1. 2. 3. 1. 2. 3. 4. 5.6.用exceI 作为开发平台有如下原因:excel 本身功能强大,包括打印,文件处理,格式化和文本编辑. excel 内置大量函数.excel 界面熟悉.可连接到多种数据库.用其他语言开发应用程序,一半的工作是编写一些基本功能的模块,包括文件的 打开和保存,打印,复制等.而用exceI 作为开发平台,则由于excel 已经具备这些基 本功能,你要做的只是使用它.1.3录制简单的宏在介绍学习VBA 之前,应该花几分钟录制一个宏。
VBS或VBE由浅入深两种方案
VBS由浅入深两种方案以下所整理的是本人学习VBS时,根据经验将所用的教程进行了归纳。
分两篇,第一篇,是某专业人士所整理的通俗易懂的学习方案,甚至没学过任何程序语言的人也可以轻松掌握;第二篇则是另一专业人士所整理的比较正式的学习方案。
本人建议同学们可以先看第一篇,有较好的语言功底的人可直接看第二篇。
当然,我有必要说一下VBS与VBE的区别:VBE跟VBS差不多,都是VB脚本代码文件,但他们也有不同:VBS是明文代码,就是说可以直接使用记事本编辑;VBE则是编译后(加密)的VBS代码,使用记事本打开不能直接看到源代码。
(有些例外)加密工具有很多,其中常用的是Microsoft Script Encoder(screnc.exe),此外还有许多。
VBE格式在QQ传文件中往往不会被拦截,而VBS格式却会被拦截,这应该是程序设计者的一个失误。
因此,所以很多人没有进行加密而直接改扩展名为“VBE”,依然能够运行,只是为了方便一下。
最后祝大家学习愉快!脚本真的很好玩!第一篇第一篇(共六篇)我知道菜鸟现在最关心的就是用什么工具来开发VBS程序了, 答案是:记事本(Notepad),我不是开玩笑, 其实任何一种文本编辑器都可以用来开发VBS开发, 只不过记事本是由系统自带的, 比较好找而已. 尽管如此, 我还是建议你去下载一个专业的文本编辑器, 因为这些工具可以提供"语法高亮"等功能, 更加方便开发, 用哪一个随你喜好, 我比较喜欢Edit Plus,ScriptCryptor也不错OK, 我们先来写一个VBScript程序热热身.REM 输入并回显你的名字'使用InputBox和Msgbox函数'(上面及本行可以不必写入源代码中,下面才是运行的代码)Dim name,msgmsg="请输入你的名字:"name=Inputbox(msg)Msgbox name把上面的程序清单输入到记事本里面, 然后保存为以.vbs为扩展名的文件(如果在文件名上没有“.***”,就打开控制面板-文件夹选项-查看-取消隐藏已知文件类型的扩展名).然后双击, 观察运行结果.注意:为了使你学得更好,推荐自己输入程序清单, 尽量不要复制->粘贴我来解释一下这个程序, 第一行和第二行的开头分别是"REM"语句和" ' ", 这两个东西的作用是相同的, 表示之后的文字是注释, 就是说符号后的什么也不干,只是用来说明这段程序的功能, 版权信息等等. 注释行是程序最重要的部分之一, 尽管它不是必需的, 但对于其他人阅读源代码, 以及自己分析源代码是很有好处的. 好的习惯是在必要的地方加上清晰, 简洁的注释.Dim用来声明一个变量, 在VBS中, 变量类型并不是那么重要, 就是说VBS会帮你自动识别变量类型, 而且变量在使用前不一定要先声明, 程序会动态分配变量空间. 在VBS中你不用考虑name储存的是一个整数还是一个小数(学名叫"浮点数"), 也不用考虑是不是字符串(一串字符, 比如:"Hello World"), VBS会自动帮你搞定. 所以第三行语句可以删除, 效果不会变, 但我强烈反对这么做, 一个变量的基本原则就是:先声明,后使用.变量名用字母开头,可以使用下划线,数字, 但不能使用vbs已经定义的字, 比如dim, 也不能是纯数字.下一行被称之为"赋值", "="是赋值符号, 并不是数学中的等于号, 尽管看起来一样.这是正统的理解, 你要理解成等于也没有什么不可. 赋值号的左边是一个变量, 右边是要赋给变量的值, 经过赋值以后, msg这个变量在程序中等同于"请输入你的名字:"这个字符串,但当msg被再次赋值的时候, 原值就会消失. 不光字符串, 其他任何变量都这样被赋值, 例如: a=2,b=12.222等等.再往下,Inputbox和Msgbox是VBS内建的函数, 一个函数就相当于一个"黑箱", 有输入(参数)和输出(返回)值, 你可以不用了解函数是怎么运作的, 只要了解这个函数能干什么就行了, 我们也可以定义自己的函数, 不过那要等到以后再讲. 现在我们只要了解, 一个函数可以有返回值也可以没有, 可以有参数也可以没有. 例如Inputbox就是有返回值的函数, 我们用赋值号左边的变量来"接"住InputBox的返回值--就是你输入的内容. 在inputbox右边的括号里是参数列表, 每个参数用","分隔开, 每个参数有不同的功效, 比如第一个参数会显示在提示里, 我们把msg这个变量作为第一个参数传给了Inputbox 函数, 而msg="请输入你的名字:", 所以我们在对话框的提示栏就会看到"请输入你的名字:" 第二个参数是对话框的标题, 我们用直接量(学名叫"常量", 这里是"字符串常量")传递给函数, 当然你也可以传递变量. Inputbox还有很多参数, 比如你在"名称"后面再加一个","然后输入随便一串字符(字符串,用双引号""包裹起来的一串字符叫做字符串)然后运行, 看看结果. 你会发现用于输入的文本框有了默认的值, 这就是第三个参数的作用.Msgbox函数是用来输出的函数, 在VBS中没有专门的输出函数(BASIC中的print,C中的printf), 所以我们只能用对话框来观察输出结果, Msgbox的必要参数只有一个, 就是要输出的内容, 在这种情况下, 我们不需要理会msgbox的返回值. 关于Msgbox和Inputbox我们以后还会在讨论, 今天只是热热身, 到此为止.要点:1) 注释(以REM或'开头)行在程序中不起作用, 但能让别人更容易读懂你的程序.2) 变量好像一个盒子, 或一个代号, 可以代表你想代表的东西. 变量赋值使用"="3) 以""包裹起来的字符称之为"字符串"4) 函数像一个"黑箱", 有参数和返回值, 用"="左边的变量可以接住返回值5) Inputbox函数弹出一个输入对话框,Msgbox则用于输出作业:1) 试验Inputbox的第三个参数2) 写一段程序输出你的年龄3) 写一段程序进行3次输入, 分别输入你和你父母的姓名(要求显示提示), 并分3次输出第二篇(共六篇)我真没想到, 第一次的作业竟然有人不会.看来要讲的非常非常细致才行, 嗯, 今天讲各种"量"和基本运算先说常量, 这个比较简单.什么是常量呢, 常量就是其值不可变化的量.常量分为两种:第一种, 自然常量. 这叫是因为它们本身就是常量, 你怎么更改21的值呢? 他永远都是21, 不可能变成46如果你在程序中使用"21=46", 这样的语句将会引发一个错误. 同样的, 字符串也是常量(还记得字符串吗? 就是包裹在""之间的一串字符), "Hello World"就是一个例子, 如果你使用"Hello World"="Bye"这样的语句同样会引发一个错误. 你能举出自然常量的更多例子吗?第二种, 是我们自己定义的常量,这种量也使用代号, 它们也被赋值, 但和变量的不同点在于, 他们在定义的时候被赋值,以后就不能改变了,如果企图改变将会引发一个错误. 定义一个常量,我们使用"const"这个关键字(关键字的意思是系统定义了有特殊功能的字, 不能作为变量名或常量名使用)格式是:const 常量名=常量值.例如:const PI=3.1415926const NAME="记忆碎片"这样我们就定义了两个常量, PI和NAME, 一般说来, 常量名全部使用大写, 但也可以不用, 随你喜好. 将一些在程序中不需要改变的值定义为常量是个好习惯, 这样能防止不必要的意外. 另外, 使用自定义常量也可以减少你的工作量. 比如:msgbox "Hello World"msgbox "Hello World"msgbox "Hello World"msgbox "Hello World"msgbox "Hello World"这个程序输出五次Hello World, 如果你想要改变输出为Bye-Bye, 就必须修改全部程序, 当然你可以手动修改5次, 但如果你要输出1000次呢? 常量就可以替我们解决这个问题: const hw="Hello World"msgbox hwmsgbox hwmsgbox hwmsgbox hwmsgbox hw这样当你要修改输出的时候只要修改hw的值就行了.好了, 现在我们来看看编程的第一块重要"基石":变量. 解释变量最好的办法我觉得是"盒子", 一个变量好像一个盒子, 里面只能装一个东西, 当你要装进去别的东西的时候必须把原有的东西拿出来. 这个"盒子"是有名称的, 当你在程序中使用变量的时候, 系统会打开盒子取出里面的东西, 让这些东西参与处理, 而不是盒子. 有些语言是很依赖"盒子"里面装些什么东西, 这样才能找到合适的"盒子"(比如C语言), 但VBS给我提供的是能够自动伸缩的"魔术盒", 我们不用关心装进去的是什么东西, VBS会自动调整盒子的大小. 例如:Dim a1,a2,a3a1=14a2=12.23a3="Hello"而不用像C语言那样麻烦: 或者是VB的正规声明(VB可以声明也可以不用)那样:int a1; Dim a1 as integerfloat a2; Dim a2 as Doublechar* a3; Dim a3 as stringa1=14; a1=14a2=12.23; a2=12.23a3="Hello"; a3="Hello"嗯……扯远了……变量有什么用呢? 哇, 那用处可大了. 最简单, 你并不能确定程序运行时变量的值, 比如前一节课我们编的输入姓名的程序, 你不能确定InputBox返回的是什么(还记得Inputbox的返回值吗? 就是你输入的内容), 所以你就没有办法应对各种情况, 但我们用name这个"盒子"把用户的名字装起来, 到用的时候我们只要知道name这个盒子的名字就行了, 系统会自己打开它并把里面的内容拿出来用. 再举个例子, 我们编写一个程序计算一个矩形的面积, 比如这个程序要发给小学生使用:dim a,b,sa=15b=12s=a*bmsgbox s这样就可以求出长为15,宽为12的矩形的面积了, 是不是很简单? 当然, 这个程序也可以这样写:dim ss=15*12msgbox s这样看起来程序短了许多, 也节约内存, 但两种都不是鼓励的做法, 为什么? 请看下面.现在, 我们的程序要变得像点样子才行, 谁的程序写出来还要别人修改源代码才能用啊?所以, 我们要接受用户的输入, 还记得吗? InputBox函数.修改后程序如下:dim a,b,sa=inputbox("请输入矩形的长:")b=inputbox("请输入矩形的宽:")s=a*bmsgbox sok, 这么一修改, 无论用户输入怎样的数据, 我们都能计算出矩形的面积了. 如果你用s=15*12能改吗? 当然不行.我想你已经发现了, vbs中的数学计算和真正的算术没有什么不同, +,-,*,/,(),[],{}都是一样的用法, 比如:dim ansans=12+32/4+[(23-10)*2]msgbox ans四则运算的法则在编程中同样生效, 你可以在编程中重新获得小学时候的乐趣(你恨数学?那就别学电脑了).在编程中有一个有趣的运算符是"mod", 这个运算符叫做"取余运算符", 就是取得一次除法的余数, 例如dim aa=16 mod 5你知道a等于几吗? Bingo! 没错, 就是1. 因为16 / 5 =3....1, 所以mod计算的结果就是1.还有一个运算符是"^"(就是键盘"6"上面的小箭头), 他表示"乘幂"(或者是"方") 比如: dim a,b,ca=2b=a^2c=a^3msgbox bmsgbox c则b=a*a=4, c=a*a*a=8好了,我们一次不要讲太多, 这次就讲到这里, 现在总结一下.要点:1) 常量分为自然常量和自定义常量, 常量的值不可修改2) 变量就像盒子, 我们不在乎盒子里装的是什么, 但一定要知道盒子的名字3) 四则运算在编程中没有任何不同4) MOD是取余运算作业:1) 编一个程序, 计算圆形的面积, 半径由用户给出(使用Inputbox) PI取值3.141592) 编一个程序取得20 / 3 的余数第三篇(共六篇)首先, 我来解决一下上次课程的几个疑问第一, 那个余数问题, 16 / 5 = 3……1, 是因为我改过前面的部分, 后面的忘了改了, 不好意思.第二, 请看一下程序清单:(1)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=a*2+b*2msgbox c这个输入1、2时是6(2)Dim a,b,ca=inputbox("a是:","输入半径")b=Inputbox("b是:","输入半径")c=(a+b)*2msgbox c这个输入1、2时是24为什么会不一样呢? 在数学上c=(a+b)*2 和 c=a*2+b*2是等价的, 在VBS中也是如此. 问题出在"+"上, 在VBS中, +不仅仅是加号的意思还表示把两个字符串连接起来, 例如"Hello"+"World"="HelloWorld" ,have you understood? 你还记得InoutBox函数的返回值吗? 是字符串! 这就看出问题了吧, 在编程中"1"不等于(<>)1, "1"是一个字符, 而1是一个数, 所以a,b都是字符串变量, "1"+"2"="12", 这就好像我们小时跟伙伴开玩笑问他们1+1=?一样, 我们总是笑着说"错啦,应该是11".但为什么, a可以*2却不发生错误呢? 这时VBS比较智能的一个表现, 如果这个字符串的内容是一个数且对他进行数学运算, 则把字符串强制转换成数参与运算, 如果字符串代表一个数, 但不参加数学运算, 而是参加字符串运算(合并)则当作字符串处理, 所以你看到a+b=12, 这时候a+b的结果(12)是一个字符串, 当它要乘以2的时候就被强制转换成了数字12, 这样我就得到了结果24.怎么修改这个程序呢? 我们需要用到另一个内建的函数:int, int函数的功能是将输入值转化成整数值, 我们这样修改:c=(int(a)+int(b))*2这个意思就是把a作为参数传递给int函数, int函数就会返回那个整数(你的输入值), 然后让返回值参与运算, 这样就得到了正确答案.所以,以后如果你用的是inputbox函数的话,最好用int语句加工一下:比如c=int(c) 'c是你自己的变量另外,还有一个函数:CDbl。
第2章 VBE,对象,属性,动作,事件
方法的使用
例如Range对象有有一个方法是Select,他的作 用是选中指定的Range(单元格区域)对象,在 立即窗口里输入代码: 回车,可以看到D1:F10已经被选中了。
试一下
在立即窗口中输入下列代码,回车 range("a1:f8").select
事件
事件就是由用户或者系统触发的,可以在 代码中响应的一段代码。 通过编写代码响应这些事件,当发生此类 事件时,程序代码就会进行相应的操作。
对象、属性、方法和事件
对象就是存在的东西,是VBA处理的内容,包括工作薄、 工作表、工作表上的单元格区域、图表等等。 对象可以相互包含,就像一个文件夹里可以包含多个文件 夹一样,而这个文件夹又可以被其他的文件夹包含,一个 工作薄对象可以包含多个多个工作表对象,一个工作表对 象又可以包含多个单元格(或图表,图形等),这种对象的排 列模式称为Excel的对象模型。
项目实践
1建立工作薄事件,当打开工作薄时,显示“ 你好,欢迎使用+工作薄的名称” 2建立工作表事件,当打开其中某一张工作表 时,弹出对话框显示此工作表的名称。 3编写程序使得对工作薄中第一张工作表的屏 蔽。即选择此张工作表是,自动跳转到另外一 张工作表。 4编写程序在按钮上加载此程序,实现对 A1:D5区域的选定。
用with语句实现属性设置
不用with时 Sub zt() Range("A1") = "宋体" Range("A1").Font.Size = 20 Range("A1").Font.ColorIndex = 4 Range("A1").Font.Bold = True End Sub
第四课 认识VBE界面(整理版)
第四课认识VBE界面今天的课程比较简单,可能半小时也可能40分钟,让大家认识一下VBE界面,即编写与保存代码的地方。
VBA是我们的编程工具,一门程序语言,VBE则是编程的地方,VBE来自VisualBasicEdirtor的缩写,即VB代码编译器,也可称为VBA代码窗口。
对于编写或者录制宏,每天打交道的地方都是VBE,所以有必要对VBE有深入的了解。
先预览一下VBE的界面,当然,VBE在不同情况下包含不同的内容,它有很多窗口,这些窗口不可能同时显示出来,而且根据需要只显示必要的部分。
第一节进入VBE的方式先谈谈进入VBE的方式,第一种是快捷键法,Alt+F11,在工作表界面,任何地方,按下这个快捷键都可以进入VBE,但是也有某些病毒会破坏这个快捷键,所以,如果你曾经中了宏病毒也可能这个键被禁用,那可以使用一句代码来修复:Subtest()Application.OnKey"%{F11}",""EndSub病毒破坏这个组合键常用Application.OnKey,所以解铃自然用系铃人。
第二种进入VBE的方法是右键菜单法,对任意工作表单击右键查看代码就可以进入VBE,不过它和快捷键法稍有分别,它是进入工作表对象的代码窗口假设单击Sheet1后进入VBE,那么总是定位到sheet1的代码窗口中,而快捷键法定位目稍有不同。
第三种是功能区按钮法请看一图,单击开发工具,可以看到进入VBE界面菜单,如果,你的Excel2010没有开发工具,那么可以在选项中设用出来先打开选项对话框然后找到自定义功能区,再将“开发工具”打勾。
第二节VBE窗口分类打开VBE后,再来认识一下VBE的窗口分类首先,最重要的是工程资源管理器,这就是工程资源管理器,假设你的VBE界面中没有,那么可以使用Ctrl+R 打开它,你可以关闭工程资源管理器,然后再用Ctrl+R试试其次是属性窗口,快捷键F4,属性窗口默认位于工程资源管理器的下方,属性窗口的作用是查看或者修改对象的属性,然后是主角:代码窗口:,代码窗口位于工程资源管理器的右方,VBE有很多很多代码窗口,工程资源管理中每一个对象都有一个代码窗口,例如Sheet1、sheet2、Sheet3、Thisworkbook、Userform1都是对象,所以有多少个对象就有多少个代码窗口,代码窗口默认是重叠的,只能看到最上层的那一个,想要切换其它窗口,双击对象就行了,例如当前是Sheet1的代码窗口,那么双击模块就进入模块的代码窗口了,对象窗口,刚才说了Sheet1sheet2Sheet3都是对象,所以当在工程资源管理器中选择Sheet1时,单击对象窗口可以打开对象,打开对象窗口的快捷键是Shift+F7,大家可以测试一次,选择Sheet3再按Shift+F7,事实上这个用处,按Alt+F11返回工作表界面就行了,又回到刚才的话题,按Alt+F11可以进入VBE,而在VBE中按Alt+F11可以返回工作表。
VBA(VBE)中一些调试的技巧
VBA(VBE)中⼀些调试的技巧1.查看变量或表达式
(1)快速预览
将光标移动到变量上,可以快速查看变量的值,但对于复杂表达式⽆法通过该⽅法预览。
(2)设置监视
可以将单独的变量,或者是表达式设置为监视对象,其值的变化可以实时显⽰在监视窗⼝中。
此外,程序运⾏的中途,还可以强⾏在监视窗⼝改变变量或表达式的值。
2.⼿动或半⾃动运⾏
(1)单步执⾏
快捷键F8,可以逐⾏执⾏语句,观察程序运⾏的效果(或监视变量值变化的情况)
(2)运⾏到光标处
快捷键Ctrl+F8,让程序快速运⾏到选定的⾏,与设置断点的效果类似。
(3)设置断点
在⾏⾸的左侧条单击,可以设置或取消设置断点,当程序运⾏到断点处时,会暂停。
(4)Stop语句
当程序执⾏到Stop语句时,会停⽌执⾏,直到⼿动继续执⾏。
此⽅法对于(⾃定义)函数的调试⾮常有效。
注:按F5可以让程序继续执⾏。
EXCEL_VBA应用教程
EXCEL VBA应用教程--第1讲什么是EXCEL VBA第1讲什么是EXCEL VBA作者:/landmao1.1 为什么要学习EXCEL VBA现在,财务软件已经趋于普及,会计人员的工作效率大幅度提高,减轻了会计人员大工作强度。
财务软件但优点是从数据但输入、处理、输出实现了一体化,在会计数据但利用方面,尽管财务软件一直都作改进,但客观上还是满足不了管理工作但要求。
因此,作实际工作中,EXCEL被大量应用,EXCEL但特点是简单易用,操作灵活,大大地弥补了会计软件地不足。
但是,EXCEL处理数据的缺点是,每一步都要人工操作和控制,对重复性的工作,每次都要重复去作。
EXCEL VBA能够将重复的工作编写成程序,这样就能够提高效率和避免人为操作的错误。
1.2 什么是VBAVBA(Visual Basic For Applications)是微软开发出来在其桌面应用程序中执行通用的自动化(OLE)任务的编程语言。
VBA是Visual Basic的一个子集,VBA 不同于VB,原因是VBA要求有一个宿主应用程序才能远行(需要在EXCEL等软件的运行下才能运行),而且不能用于创建独立应用程序。
而VB可用于创建独立的应用程序。
VBA可使常用的过程或者进程自动化,可以创建自定义的解决方案,最适用于来定制已有的桌面应用程序。
通常意义上的VBA就是在Office中包含着的一种加强Office功能的Basic 语言。
经过发展,在Office中,Word、Excel、Access、PowerPoint等个软件都有了自己的程序设计语言,分别称为WordBasic、ExcelBasic、AccessBasic、PowerPointBasic (在Outlook中的开发语言为Visual Basic Scripting Edition)。
通常统一称为VBA(VB for Application)。
本讲座,主要基于EXCEL VBA进行讲解。
Excel VBA编程 VBE功能简介
Excel VBA编程VBE功能简介
在Excel中,要使用VBA编辑、调试宏或者进行应用程序的开发,都必须通过VBE来完成相关的操作。
使用VBE可以完成以下操作:
1.创建VBA过程
利用VBE可以创建通用过程和事件过程,这样可以大大简化用户操作,从而完成更多功能,如图2-1所示。
创建
过程
图2-1 创建过程
2.创建用户窗体
根据开发需要,用户可以自行建立窗体,使应用程序显得更佳美观、大方。
并且利用窗体,可以输入或编辑数据以及对应用程序的执行控制。
如图2-2所示。
用户
窗体
图2-2 用户窗体
3.查看、修改对象属性
在创建窗体过程中,有时还需要对窗体中的控件的属性进行设置,包括设置控件的大小、位置和颜色等属性。
通过设置对象的属性,让其更符合用户要求。
这些操作都是在【属性】窗口中进行设置的,如图2-3所示。
查看
属性
图2-3 属性窗口
4.调试VBA程序
如果需要对编写的程序代码进行调试,也可以在VBE的【代码】编辑窗口中对其进行操作。
通过调试代码,从而完善应用程序的功能,避免错误发生,如图2-4所示。
图2-4 VBA调试。
e celVBA最基础入门手册
e x c e l V B A最基础入门手册1、什么是VBA?为什么要学习VBA2、VBA与宏3、VBE简介4、对象、属性、方法、事件5、VBA过程6、数据类型、变量、数组、常量7、(回复)该定义变量为何种数据类型8、VBA的函数9、程序流程控制:if语句10、程序流程控制:Select Case语句11.程序流程控制:For—next语句12、几个for—next 循环的例子(作者:老朽13、程序流程控制:For—Each语句14、程序流程控制:Do While语句15、程序流程控制:Do Until语句16、程序流程控制:Go to 语句17、用户窗体18、再说Excel的对象模型19、[小试牛刀]制作一个个性化的欢迎界面20、处理单元格数据(复制、剪切、删除21、Range对象的End 属性(带作业)22、花名册分类(实例)23、花名册汇总(实例24、新建工作表25、认识数组(一)26、Worksheet的Change事件(带作业)27、关于Application.EnableEvents属性(有实例动画)Application.EnableEvents补充说明28、关于Worksheet的SelectionChange事件(有实例动画)29、Worksheet的SelectionChange事件实例(trustwxq 朋友提供)什么是VBA?为什么要学习VBA?=========VBA是Visual Basic For Application的简称,具体说来,可能让叶枫三天三夜也说不完,叶枫也只知道VBA是建立在Office中的一种应用程序开发工具,其实知道这也就够了。
很懒很笨的叶枫只想吃香喷喷的大米饭,可从没想要知道大米饭是怎么来的。
Excel本身的内置函数其实已经很强大了,甚至有人说,只要学会二三十个函数,就已经可以满足普通用户日常的工作需求。
那我们为什么要学VBA?是的,如果只需要满足一些普通的工作需求可能永远也不会用到VBA,但在实际应用的过程中,人们的操作却越来越大,需要也越来越高,这时候就需要用VBA来对Excel进行二次开发了,VBA 可以有效地自定义和扩展Excel的功能。
vbe编程教程
GIS的积累It is never to late to learn导航博客园首页新随笔联系订阅管理统计随笔- 416文章- 0评论- 15引用- 1公告VBS学习dim objset obj=createobject("wscript.Shell")obj.Run "c:\windows\system32\notepad.exe"Dim namename="已经打开"Msgbox name, , "您的名字是"qtp:vbs基础教程◎Vbs脚本编程简明教程之一—为什么要使用Vbs?在Windows中,学习计算机操作也许很简单,但是很多计算机工作是重复性劳动,例如你每周也许需要对一些计算机文件进行复制、粘贴、改名、删除,也许你每天启动计算机第一件事情就是打开WORD,切换到你喜爱的输入法进行文本编辑,同时还要播放优美的音乐给工作创造一个舒心的环境,当然也有可能你经常需要对文本中的某些数据进行整理,把各式各样的数据按照某种规则排列起来……。
这些事情重复、琐碎,使人容易疲劳。
第三方软件也许可以强化计算机的某些功能,但是解决这些重复劳动往往事倍功半,我也尝试过使用计算机语言编写程序来解决这些问题,但是随之而来的命令、语法、算法、系统框架和类库常常让我觉得这样是否有必要,难道就是因为猪毛比较难拔,所以我就要去学习机械,为自己设计一个拔猪毛机(?)吗?Vbs是一种Windows脚本,它的全称是:Microsoft Visual Basic Script Editon.(微软公司可视化BASIC脚本版),VBS是Visual Basic的的一个抽象子集,是系统内置的,用它编写的脚本代码不能编译成二进制文件,直接由Windows系统执行(实际是一个叫做宿主host的解释源代码并执行),高效、易学,但是大部分高级语言能干的事情,它基本上都具备,它可以使各种各样的任务自动化,可以使你从重复琐碎的工作中解脱出来,极大的提高工作效率。
excel2007VBA教程
前言1为什么要学VBA?随着你的Excel水平不断的提高,以前你不会函数,现在会函数了,相信大家尝试到函数的甜头,可以批量操作一些数据,如,从文本里提取数字,按条件求和,自动生成工资条,考勤表,查询表,输入一个人的身份证号码,会自动填好“出生地”,“出生年月日”,“年龄”,“性别”等等,一谈起函数大家都会“不亦乐乎”。
“津津乐道”,“和函数相见恨晚”,说实在话,我当时也是一种这样的心态,我学会的第一个函数if,当时高兴地睡不着觉。
因为它可以判断“不及格,及格,良好,优秀”,感觉到这个函数太神奇了。
对工作太有用了,于是我下定决心一定要把函数学好,当然中间也产生过“放弃”的念头。
为什么呢?因为每一个函数的参数都是长长的,不认识的英文单词,然后又有一些朋友叫我查看Excel自带的“帮助”文件。
极少一部分看“帮助”文件还是可以看懂的,大多数根本看“帮助”文件看不懂,发现自带的“帮助”是便于有一定基础的使用者查找和学习某个知识点,而对于新手来说,也像“侠客行”里的“石破天”看不懂石壁上的蝌蚪文,不能明白其意思。
呵呵,一扯又扯远了,还是回到主题上来。
当我们的函数学到了一定的水平时,可是,还是发现有一些问题不能解决。
如果要解决用的函数特别复杂且很公式很长,有的根本用函数不能解决了。
如一个单元格又有文字,又有数字,且数字出现的位置没有规律,且不只一次出现。
要求把数字提取出来。
又如提取工作薄里的各工作表名来制作目录。
当然我们可以用函数实现,但是特别麻烦。
又如,把多作工作簿汇总到一个工作簿里一个工作表时,方便我们汇总,现有的Excel功能无法批量操作,只能一个一个的,通过复制粘贴来完成。
如果我们会VBA ,你又到了Ecel里的另一个天地了。
开个玩笑,Excel VBA,就像“九阴真经”里的第九层,也就是说,你会了Excel的VBA,那么你就可以随心所欲驾驭Excel表格,别人要三天才能完成的报表,你只要半天,甚至更短的时间,这样大大可以提高你的工作效率,上班时,别人上班时忙来忙去,你倒是很轻松。
ExcelVBA入门(九)操作工作薄
ExcelVBA⼊门(九)操作⼯作薄虽然我前⾯讲过,在VBA中操作⼯作薄并不是件明智的事,但有些时候,还是避免不了要这么做。
绝⼤多数情况下,我们要做的是获取到某个⼯作薄对象,并以此来获得其中的⼯作表对象,然后再对⼯作表中的数据进⾏处理。
⽽后⾯这⼀部分(操作⼯作表)在前⾯已经讲过了,所以本章只讲如何在VBA中打开、关闭⼯作薄,以及介绍两个常⽤的⼯作薄对象。
在VBA中打开⼯作薄有两种⽅法:显式打开及隐式打开。
1. 显式打开显式打开即跟我们⼿动双击打开⼀个Excel⽂件⼀样,可以看到⼯作薄的内容,可以在⾥⾯进⾏各种操作。
代码及⽰例如下:Sub workbook_operate()' 定义⼯作薄对象Dim wbk As WorkbookDim fname As Stringfname = "E:/temp/test.xlsx"' 根据⼯作薄⽂件路径打开⼯作薄Set wbk = Application.Workbooks.Open(Filename:=fname)MsgBox fname & "已打开"' 关闭⼯作薄wbk.CloseEnd Sub结果如下:然后就可以根据这个workbook对象(⽰例中的wbk变量)来获取到其中的⼯作表:Set parameter_sht = wbk.Worksheets("Parameter")或者取得这个⼯作薄的⼀些属性:最后可以使⽤Close⽅法来关闭这个⼯作薄:wbk.Close2. 隐式打开使⽤隐式打开的时候,这个⼯作薄在前端是看不到的,只有在VBE环境中(的⼯程窗⼝)可以看到它。
⽰例代码及结果如下:Sub workbook_operate()' 定义⼯作薄对象Dim wbk As WorkbookDim fname As Stringfname = "E:/temp/test.xlsx"' 根据⼯作薄⽂件路径获取⼯作薄对象Set wbk = GetObject(fname)Debug.Print End Sub与显式打开不同的是,这是使⽤了GetObject⽅法。
VBA代码编辑器(VBE)
1.3 VBA代码编辑器(VBE)Visual Basic编辑器(VBE)是一个集成的开发环境,是我们查看、编辑、调试VBA程序的重要工具,熟悉和掌握VBE对于提高代码编写的速度,以及调试程序、迅速排除错误有着很重要的帮助。
打开Access数据库,选择菜单【工具】∣【宏】∣【Visual Basic 编辑器】,便进入VBE。
1.3.1 VBE窗口的分类及功能编辑器中有很多窗口,它们可以以窗格的形式显示。
用户可根据自己的习惯用鼠标拖动它们停靠在窗口任意位置,或者选择性的显示一些窗格,如图8-6与8-7所示。
图1-6 VBE窗口1图1-7 VBE窗口2代码窗口:代码窗口用来编写、显示以及编辑Visual Basic代码。
过程与过程之间会显示一条灰色横线以分割。
“过程查看”图标,显示所选的过程,同一时间只能在代码窗口中显示一个过程。
“全模块查看”图标,显示模块中全部的代码。
立即窗口:立即窗口键入或粘贴一行代码,然后按下ENTER 键来执行该代码,立即窗口中的任何代码或者结果都不能够被存储。
可以用鼠标把选定的代码在立即窗口与代码窗口之间相互拖放。
程序中的“Debug.Print”语句也会将结果输出到立即窗口。
注意在立即窗口显示的信息容量是有限的,当使用大量Debug.Print语句时,可能看不到位于开头位置语句的打印结果。
如果内容比较多,可以考虑将输入信息保存到一个指定的数据表中,以便事后进行观察和分析。
在中断模式下,立即窗口中的语句,是根据显示在过程框的内容或范围来执行的。
我们往往用此来监视代码的执行情况。
本地窗口:本地窗口打开时,可自动显示出当前模块级别及在当前过程中的所有变量的声明及其当前值。
监视窗口:当工程中有定义监视表达式定义时,就会自动出现,窗口中列出了监视表达式及其值、类型与上下文。
1.3.2 对象浏览器按下快捷键F2,可打开对象浏览器,显示出对象库以及这些对象库可供使用的对象、属性、方法、函数及常数。
利用VBA代码操作VBE一例
利⽤VBA代码操作VBE⼀例▎具体需求⼯作表中存在代码,现在需要把代码写⼊当前⼯作表的模块中,并插⼊按钮,指定按钮触发该程序(循环打开⼯作簿这个sub过程)。
全部都⽤VBA的⽅式来实现。
▎代码思路⾸先需要新建模块,将代码写⼊模块,接着需新建按钮,并且把按钮的触发事件代码写⼊⼯作表模块。
▎实现代码Sub 插⼊代码() '//将⼯作表中的代码,写⼊模块 On Error Resume Next '引⽤Microsoft Visual Basic for Applications Extensibility 5.3,否则会报错 ActiveWorkbook.VBProject.References.AddFromFileEnviron$("commonprogramfiles") & "\microsoft shared\VBA\VBA6\VB6EXT.OLB"'ThisWorkbook.VBProject.References.AddFromFile "D:\Program Files\VB98\VB6EXT.OLB"'ActiveWorkbook.VBProject.References.AddFromGuid _ "{0002E157-0000-0000-C000-000000000046}", 5, 3 Set VBComp = ActiveWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) '新增Module1 = "NewModule" '新增模块的名字叫NewModule For Each Rng InActiveSheet.Range("A1:A" & ActiveSheet.Cells(Rows.Count, 1).End(3).Row) '将活动sheet中A列的代码,⽤换⾏符连接起来,等下整体写⼊模块中 Code = Code & Rng & vbCrLf Next Rng Set a = ActiveWorkbook.VBProject.VBComponents("NewModule").CodeModule a.InsertLines 1, Code '将代码写⼊模块 '//插⼊ActiveX按钮控件,并且设置按钮控件显⽰的内容是【执⾏】 Set MyNewbtn = ActiveSheet.OLEObjects.Add(ClassType:="mandButton.1", Link:=False _ , DisplayAsIcon:=False, Left:=ActiveCell.Left, Top:=ActiveCell.Top, Width:=92.25, Height:=30) = "MyNewButton" '设置按钮名 MyNewbtn.Object.Caption = "执⾏" '设置按钮标题 '//向⼯作表模块写⼊按钮的代码 Set wmodle =ActiveWorkbook.VBProject.VBComponents.Item("Sheet1").CodeModule wmodle.InsertLines 1, "Private Sub MyNewButton_Click()" wmodle.InsertLines 2, "call 循环打开⼯作簿" wmodle.InsertLines 3, "End Sub"End Sub运⾏之前,需要做⼀个准备⼯作:信任对VBA⼯程对象模型的访问▎运⾏结果▎补充⼀些对VBE操作的代码添加模块、过程、代码Sub 添加新模块B() With ThisWorkbook.VBProject.VBComponents.Add(vbext_ct_StdModule) .Name = "B" End WithEnd Sub' vbext_ct_ClassModule 将⼀个类模块添加到集合' vbext_ct_MSForm 将窗体添加到集合' vbext_ct_StdModule 将标准模块添加到集合Sub 添加新过程() Dim sr, code sr = "Sub ABC()" & vbCrLf & "Msgbox ""测试添加代码""" & vbCrLf & "End Sub" With ThisWorkbook.VBProject.VBComponents("B").CodeModule .AddFromString sr End WithEnd SubSub 在B模块中的第3⾏插⼊⼀⾏代码() With ThisWorkbook.VBProject.VBComponents("B").CodeModule.InsertLines 3, "sheets(1).Select" End WithEnd Sub添加模块、过程、代码Sub 删除B模块() With ThisWorkbook.VBProject.VBComponents .RemoveThisWorkbook.VBProject.VBComponents("B") End WithEnd SubSub 删除B模块中的ABC过程() Dim 开始⾏数, 总⾏数 WithThisWorkbook.VBProject.VBComponents("B").CodeModule 开始⾏数 = .ProcBodyLine("ABC",vbext_pk_Proc) 总⾏数 = .ProcCountLines("ABC", vbext_pk_Proc) .DeleteLines 开始⾏数, 总⾏数 End WithEnd Sub导⼊、导出和替换⼀个模块或代码Sub 导出⼀个模块() ThisWorkbook.VBProject.VBComponents("A").Export "D:/A.bas"End SubSub 导⼊⼀个模块() ThisWorkbook.VBProject.VBComponents.Import "D:/A.bas"End SubSub 替换⼀个模块() '先删除模块,然后导⼊新模块 ThisWorkbook.VBProject.VBComponents.RemoveThisWorkbook.VBProject.VBComponents("A") ThisWorkbook.VBProject.VBComponents.Import"D:/A.bas"End SubSub 替换A模块的B程序第⼀⾏代码() Dim 开始⾏数 WithThisWorkbook.VBProject.VBComponents("B").CodeModule 开始⾏数 = .ProcBodyLine("ABC",vbext_pk_Proc) .ReplaceLine 开始⾏数 + 1, "MsgBox ""修改后""" End WithEnd Sub模块的查找'Find(查找内容,开始⾏数,开始列数,结束⾏数,结束列数,是否匹配)Sub 在B模块中查找() With ThisWorkbook.VBProject.VBComponents("B").CodeModule MsgBox .Find("我", 1, 1, 1, 1) End WithEnd Sub其他代码Sub 给⽂件添加模块() Dim wb As Workbook, ph As String Application.DisplayAlerts = False ph = ThisWorkbook.Path & "\" Set wb = Workbooks.Open(ph & "test.xls")ThisWorkbook.VBProject.VBComponents("A").Export ph & "A.bas" Windows().Visible = True wb.VBProject.VBComponents.Import ph & "A.bas" wb.Close True Set wb = Nothing Kill ph & "A.bas" Application.DisplayAlerts = TrueEnd SubSub 删除指定⽂件模块() Dim wb As Workbook, ph As String Application.DisplayAlerts = False ph = ThisWorkbook.Path & "\" Set wb = Workbooks.Open(ph & "test.xls") Windows().Visible = True wb.VBProject.VBComponents.Remove wb.VBProject.VBComponents("A") wb.Close True Set wb = Nothing Application.DisplayAlerts = TrueEnd SubSub 列出引⽤列表⽬录()Dim ref, iFor Each ref In ThisWorkbook.VBProject.Referencesi = i + 1 Cells(i, 1) = Cells(i, 2) = ref.FullPath Cells(i, 3) = ref.DescriptionNext refEnd SubSub 引⽤IDE() ThisWorkbook.VBProject.References.AddFromFile "D:\Program Files\VB98\VB6EXT.OLB" '路径根据⾃⼰的电脑更新End Sub Sub 添加字典引⽤() ThisWorkbook.VBProject.References.AddFromFile "C:\Windows\System32\scrrun.dll"End SubVBA微信交流群已经到④群,⽬前准备开设⑤群,需要交流VBA或者函数的朋友可扫码,邀请你进群。
ExcelVBA入门(七)注释、宏按钮及错误处理
ExcelVBA⼊门(七)注释、宏按钮及错误处理系统性的知识前⾯已经讲完,从本章开始,本系列教程涉及的将会是⼀些相对凌散的内容。
1. 注释代码注释是⼀件利⼈利⼰的事,为了⽅便⾃⼰在代码需要更新修改时,依然能够快速地看懂⾃⼰完的每⼀⾏代码到底是什么意思有何⽤处,在关键点加上代码注释是很有必要的。
如果要让别⼈也能看懂⾃⼰的代码,那么注释更是不可或缺的。
VBA中有两种注释的⽅法,其⼀是使⽤单引号,另⼀种是Rem。
在单引号后⾯或Rem后⾯的所有内容,在程序运⾏时都不会被执⾏,它们就是注释的内容。
通常注释的内容会被⽤其它颜⾊标识。
如下:有点不⽅便的是,貌似VBA⾥⾯并没有提供多⾏注释的⽅法,要想把多⾏代码注释掉,只能在每⼀⾏前⾯都加上单引号或者Rem在程序写得⽐较长的时候,就有必要在其中加⼊注释。
注释通常应使⽤于:逻辑复杂的地⽅调⽤⾃定义的函数或过程每个函数和过程的开头。
描述本函数和过程的作⽤还有其它⼀些作者认为应当写上注释的地⽅。
每⾏都注释肯定是多余的,但不写注释,通常也是不对的。
什么时候该写,什么时候不写,只有要⾃⼰⽤得多了之后,才会清楚。
2. 宏按钮前⾯所讲的所有代码案例,都是在VBE⾥⾯执⾏的(⽆论是通过单击运⾏按钮还是快捷键F5),但这样明显是不⽅便的。
⼀是每次都需要打开VBE甚⾄要定位到某⼀个过程中,才可以执⾏,⼆是如果不懂VBA操作的⼈,则完全不知该如何执⾏了。
在Excel菜单栏-开发⼯具中,找到“插⼊”,点击它可发现有“表单控件”和“ActiveX控件”,这⾥使⽤的是第⼀个,表单控件。
它的第⼀个,就是按钮。
点击⼀下这个按钮,则可以在Excel表格中通过⿏标的拖动来放置⼀个按钮对象。
如果使⽤的是表单控件中的按钮,则在放开⿏标后,会马上弹出⼀个指定宏的对话框:当然这时也可以不指定,点取消即可。
后⾯有需要时,通过右键单击这个按钮,选择指定宏也可以达到同样的效果。
其实理论上来说,VBA中的过程,或者说Excel中的宏,可以指定给Excel中的各种对象实体,⽐如插⼊的图⽚、各种形状,甚⾄在Excel中的⽣成的图表,都是可以作为宏执⾏的载体的。
VBE操作技巧
VBE操作技巧VBE,即Visual Basic编辑器,可以在其中方便地输入VBA代码、编辑代码、调试代码等。
下面是收集的关于VBE 操作的一些常用技巧,供参考。
大家如果还有什么好的操作技巧,也可以拿出来与大家分享。
技巧1:注释块如下图1所示,在VBE的“编辑”工具栏中,有两个按钮(设置注释块、解除注释块),可以很方便地将代码转为注释,或者将注释的代码转为代码。
图1:设置/解除注释块这项功能对调试代码很方便。
技巧2:快速复制代码块在按住Ctrl键的同时,拖动代码块到需要的地方,可以复制代码块。
这种方法也可用于在模块间复制代码。
技巧3:在模块和过程间切换按Ctrl+Tab键将迅速地在模块间移动。
按Ctrl+PageUp键或Ctrl+PageDown键在同一模块里过程间移动。
技巧4:直接跳到调用的函数或变量在查看代码时,如果想研究代码所调用的函数或变量,只须将光标置于所调用的函数或变量名中,然后按Shift+F2键,即跳转至该函数或变量定义的位置。
按Ctrl+Shift+F2返回到调用处。
技巧5:过程视图/全模块视图如下图2所示,在代码窗口的左下角有两个小按钮,左边是“过程视图”按钮,右边是“全模块视图”按钮。
图2:过程视图/全模块视图当单击“过程视图”后,将仅限于在光标所在的过程中编辑和查看代码,同一模块中的其它过程不可见。
这样,避免在使用滚动条查看和修改代码时,到另一个过程中而不知道,导致错误的修改。
技巧6:拖动黄色的箭头在调试代码时,有时会出现黄色箭头和相应的黄色阴影选择,如下图3所示。
图3:VBE代码窗口中出现的黄色箭头和黄色选择此时,可以向上或向下拖动黄色箭头到指定的代码行。
这样,在调试时,可以很容易地跳过一些代码。
也可以将光标移动到新行,然后按Ctrl+F9键。
技巧7:避免自动语法检测的干扰如果在VBE的“选项”对话框中,选中了“自动语法检测”,那么输入代码时若存在编译错误会弹出错误消息框,只有在单击“确定”按钮取消错误消息框后才能继续输入代码。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
菜鸟们!你们了解什么是VBE吗?输入会吗?今天我黑蝎教大家VBS!()msgbox "Hello World!"然后用鼠标单击“文件”菜单,单击“保存”,把“保存在”一栏设为桌面,在“文件名”一栏中填写kk.vbs,单击“保存”就可以了。
然后最小化“记事本”窗口,在桌面上寻找你刚刚保存的k k.vbs,然后双击。
看到弹出的对话框了没有,单击“确定”,对话框消失了。
[作者:临汾市外事旅游局薛靖澜,转载请注明出处]难看了点,不过确实是你编写的第一个脚本程序。
说明之一:上面的操作中,保存位置放在桌面,仅仅是为了执行方便,你保存到其他的地方完全没有问题,只要你知道你保存在什么地方就可以了,什么?是废话,自己保存的当然知道保存在那里了。
不,自己保存的文件自己找不到的人我见的多了去了。
文件名你可以随意填写,不一定非要写kk,只要符合Windows的文件命名规则就可以了,但是扩展名必须是vbs,什么?不知道什么是扩展名?就是文件名中“.”后的那部分,简单说,就是vbs脚本文件命名时必须是:xxx.vbs,其中xxx你随意。
说明之二:在记事本编辑窗口中写的这行是什么意思?Msgbox是VBS内建的函数,每一个函数都可以完成一定的功能,你只需要按照语法要求,在函数的相应部分填写相应的内容就可以了,这部分内容我们称为参数,当然函数执行的结果我们称为返回值,一个函数可以有返回值也可以没有,可以有参数也可以没有。
你不用了解函数是怎么运作的,只要了解这个函数能干什么就行了。
Msgbox语法:msgbox "对话框内容", , "对话框的标题"你不妨用记事本打开刚才的文件在编辑窗口中输入:msgbox "Hello World!" , , "系统提示"执行一下,看看效果和位置。
说明之三:如果执行失败,看看你的标点符号,所有的标点符号必须是在英文状态下输入的。
[作者:临汾市外事旅游局薛靖澜,转载请注明出处]当然,这个脚本实在是太简单了,甚至连最简单的交互都没有,所以你可以把脚本这样修改一下:Dim namename=Inputbox("请输入你的名字:","名称")Msgbox name, , "您的名字是"保存执行一下,看到弹出的对话框了么?填入你的名字,点确定,看到结果了吗?说明之一:第一句是定义变量,dim是定义变量的语句其格式为:dim 变量1,变量2……,Vbs只有一种变量类型,所以不用声明变量类型。
系统会自动分辨变量类型。
说明之二:inputbox是VBS内建的函数,可以接受输入的内容,其语法格式为:Inputbox("对话框内容","对话框标题")第二句的意思是接受用户的输入,并把输入结果传递给变量name。
好了,到此脚本基本的输入输出函数都有了,已经可以完成一些比较简单的功能了,你可以编写一个简单的脚本,然后拷贝的“程序”—>“启动”中,然后重新启动计算机看看结果。
◎Vbs脚本编程简明教程之三—Vbs的基本语法(牢记)VBScript基础知识一、变量1、所有单引号后面的内容都被解释为注释。
2、在VBScript中,变量的命名规则遵循标准的命名规则,需要注意的是:在VBScript中对变量、方法、函数和对象的引用是不区分大小写的。
在申明变量时,要显式地申明一个变量,需要使用关键字DIm来告诉VBScript你要创建一个变量,并将变量名称跟在其后。
申明多个同类型变量,可以用逗号分隔。
注意:VBScript中不允许在申明变量的时候同时给变量赋值。
但是允许在一行代码内同时对两个变量进行赋值,中间用冒号分隔。
3、你可以使用OptionExplicit来告诉宿主变量必须先声明后使用。
4、VBScript在定义时只有一种变量类型,[作者:临汾市外事旅游局薛靖澜,转载请注明出处]在实际使用中需要使用类型转换函数来将变量转换成相应的变量类型。
Cbool函数将变量转换成布尔值;Cbyte函数将变量转换为0到255之间的整数。
Ccur函数、Cdbl函数和Csng函数将变量转换为浮点数值,前者只精确到小数点后四位,后两者要更加精确,数值的范围也要大的多。
Cdate函数将变量转换为日期值。
Cint函数和Clng函数将变量转换为整数,后者的范围比前者要大的多。
Cstr函数将变量转换为字符串。
二、数组数组的定义与变量非常类似,只需要在变量后描述这个数组的个数和维数。
需要注意的是:数组的下标总是从0开始,而以数组定义中数值减一结束。
也就是说你以要定义一个有十个数据的数组,将这样书写代码:dImarray(9),同样,当你要访问第五个元素时,实际的代码是array(4)。
当然,你可以通过不指定数组的个数和维数来申明动态数组。
等到数组的个数和维数固定后,使用关键字redim来改变数组。
注意,在改变数组的大小时,数组的数据会被破坏,使用关键字preserve来保护数据。
例如:RedIm空格preserve空格array括号个数逗号维数括号三、操作符在VBScript运算符中,加减乘除都是我们常用的符号,乘方使用的是^ ,取模使用的Mo d。
在比较操作符中,等于、小于、大于、小于等于、大于等于都与我们常用的符号是一致的,而不等于是小于和大于连用。
逻辑运算符为:和操作—>AND 非操作—>NOT 或操作—>OR;你可以使用操作符+ 和操作符& 来连接字符串,一般使用&操作符;另外还有一个比较特殊的操作符Is用来比较对象,例如按钮对象,如果对象是同一类型,结果就是真,如果对象不是同一类型,结果就是假。
四、条件语句主要有if……then语句和selectcase语句两种形式在if……then语句中,其基本形式为:If 条件then处理条件的语句;……Endif基本形式只能对单个条件进行验证,如果有两个条件,则需要在基本形式中添加单行语句e lse,如果还有更多的条件需要验证,则需要添加语句Elseif 条件then处理条件语句在selectcase语句中,其基本形式为:Select case 变量Case 条件值处理条件语句并对上两句进行重复最后一句应为处理语句当然不要忘记将条件结束语句End select放在最后一行注意:在执行字符串比较时,需要特别注意大小写,一般情况下,我们在比较前,使用lca se函数将字符串转换成小写,使用ucase函数将字符串转换成大写大写。
五、循环控制语句循环控制语句有for……next循环、for……each循环、do……while循环、do……until循环、while循环五种形式。
在使用循环控制语句前,[作者:临汾市外事旅游局薛靖澜,转载请注明出处]首先要对循环条件进行判断,如果循环次数是有固定次数的,那么使用For……next循环,其结构为:For 计数器变量=开始计数值to 最后计数值执行循环体Next如果是需要对数组或对象**中的每一个元素进行判断,则需要使用for……each循环,其结构为:For each 循环计数变量in 要查看的对象或数组执行处理语句Next注意:在上述两种循环中随时可以使用exit for来退出循环如果你希望在条件满足时执行一段代码则使用do……while语句,结构为:Do while 条件Loop如果你希望在条件不满足时执行代码,则使用do……until语句,结构为:Do until 条件执行循环体Loop当然,在这两种循环语句中,你可以使用exit do来退出循环最后一种循环语句是条件满足时一直执行循环,While 条件执行循环体Wend六、使用过程常用的过程有两种,一种为函数,给调用者返回值,一种为子程序,无返回值,还有一种叫事件的特殊子程序,用的比较少。
函数的基本定义方法为:Function 函数名称(参数列表)函数代码函数名称=某值‘用来返回值end function子程序一些都类似,不过没有返回值注意:尽管在定义子程序的时候,参数列表要加括号,但在调用子程序的时候,参数列表不加括号,括号只在函数中使用。
另外,子程序不能在表达式中使用。
而函数只能出现在赋值语句的右边,或者表达式中,函数不能直接使用,如果必须直接使用函数,则必须使用call语句调用,并取消返回值◎Vbs脚本编程简明教程之四—如何利用Vbs运行外部程序?Vbs只提供了编程的一个基本框架,用户可以使用Vbs来定义变量、过程和函数,vbs也提供了一些内部函数和对象,但是Vbs没有提供任何命令来访问Windows系统内部的部件,但是值得庆幸的是,Vbs虽然不能自己完成这些任务,但是它提供了一条极为方便、功能也相当强的命令——CreateObject,这条命令可以访问windows系统内安装的所有com对象,并且可以调用这些部件中存放的命令。
于是问题解决了,比如说,[作者:临汾市外事旅游局薛靖澜,转载请注明出处]我手头有1 000个小文本,我首先要对每一个文本的语法进行查错和修改,然后按照预先定义好的规则对这些文本进行排序,最后将这些文本合并成为一个文件。
正常情况下,我们需要把打开第一个小文本,然后把它复制到WORD中,然后利用里面的除错功能进行除错和修改,然后再导入到EXCEL中进行排序,将这个过程重复1000遍,然后再将所有得到的文本复制到一个大文本中。
实在是太枯燥、工作量太大了。
有了Vbs和CreateObject,问题得到解决,我只需要找到相应的模块,调用相应的功能就可以了,作为脚本,把一个枯燥的过程重复1 000次,本就是它的拿手好戏。
好了,我们走入正题,从最简单的——只启动一个程序开始。
WSH也就是用来解析Vbs的宿主,本身包含了几个个常用对象:1、Scripting.FileSystemObject —> 提供一整套文件系统操作函数2、Scripting.Dictionary —> 用来返回存放键值对的字典对象3、Wscript.Shell —> 提供一套读取系统信息的函数,如读写注册表、查找指定文件的路径、读取DOS环境变量,读取链接中的设置4、Work —> 提供网络连接和远程打印机管理的函数。
(其中,所有Scripting 对象都存放在SCRRUN.DLL文件中,所有的Wscript对象都存放在WSHOM.ocx文件中。
)现在我们需要的是第三个对象,好了,让我们先连接一下对象看看,在记事本的编辑窗口中输入:Set objShell = CreateObject(“Wscript.Shell”)objShell.Run “notepad”同样,保存执行。