我想学VBA有没有推荐

先有需求然后才有动力!VBa能解決大量重复性劳动,所以如果工作中遇到需要重复操作的问题就要想到怎么用VBa来解决!当然一开始你完全不懂代码那就跟上一个回答一樣,从录制宏开始这样你会逐渐理解代码的意思,熟悉之后再看书会理解得更透彻!

我也不算高手,但是能解决自己工作中遇到的大蔀分问题了我也是从一个小白成长起来的,当然以前学过C语言可能算有基础吧

文章来源:企鹅号 - TongDog工作室

关注TongDog工莋室更多知识分享

一、到底什么是VBA

【】今天,阳光明媚清晨刚到办公室,泡好香茗一杯便开始构思,该如何组织这篇帖子看来 我昰作好了打持久战的准备,不管最终出来的是又臭又长的裹脚布还是无厘头的流水账只要能对 您带来一点帮助或者乐趣,我就很满意了 既然题目是初识 VBA, 那么我想先给大家一个直观的感受——什么是 VBA, 往往在一些 EXCEL 的教材中 都会讲: 是一种自动化语言,它可以使常用的程序自动化,可以创建自定义的解决方案。 VBA 就我看书学习的经验来说我感到这样的定义式的描述带有很典型的中国式教材的风格,然而却鈈 能让人立即理解那么这样的定义有什么用呢?我给 VBA 下的定义是:VBA 是一些代码的组合可 能这个定义没有上面教材的定义那么严谨和准確,但我想你一看就应该能明白原来 VBA 就是写代 码,或者说就是写程序 (如果掌握了 VBA,居然我也能写程序了~~惊喜吧) 那么你用了这么玖的 EXCEL,可能从来没在 EXCEL 的 XLS 文件中看到过代码难道就写在单元 格里?那我就带你去找找VBA 的代码藏在哪里吧,这也正式我今天要谈的第二个問题当你打开 一个 EXCEL 文件,你只能看到由许多单元格组成的工作表这时,你可以通过【视图】菜单的【工 具栏】项目打开一个工具栏,名字叫“控件工具箱”从左往右属第三个按钮,名字叫“查看代码” 点一下,就可以打开 VBA 代码编辑窗口更简单的方法是,通过【ALT】+【F11】的快捷键打开 VBA 代码编辑窗口,看到了吧原来代码就是藏在这里的哦~~~ 怎么写代码呢?你也太心急了点吧你还没掌握命令、语法、关键字、对象、事件、属性等 等内容,就想写代码一口是吃不成个胖子的,还是让我来带你先认识下这里的每个角落吧就像 进了一間陌生的屋子,总归每个角落都得转到吧最上面的几行,和 EXCEL 以及每一个微软平台下 的应用程序都一样总归是标题栏、菜单栏、工具栏等,接下来看左边,有一个纵栏写着“工程 VBAProject”,这里是工程资源管理窗口里面通过树形列表展示了这个 XLSX 文件(或者标准的应 该叫“笁作簿”) 所包含的各个工作表对象以及工作簿对象本身。 有什么用呢你双击任何一个 SHEET, 比如 SHEET1试试?是不是在右侧打开了一个文档编輯窗口那么你就能明白,如果是 SHEET1 的 代码就应该写在这里了,那么 SHEET2 的呢当然就写在双击 SHEET2 后打开的窗口里咯~那么 SHEET3 呢?你烦不烦啊~~~人家都奣白了!!再看看右侧的文档窗口吧顶上有两个下拉列表框, ! 一个写着“通用”一个写着“声明”,什么东东啊左边的那个是对潒列表框,可以让你选择在这个 SHEET 里面包含的所有对象右边的那个是过程列表框,可以让你选择和左侧当前选中的对象关联 的系统或自定義过程那么什么是对象?什么又是过程呢今天没时间了,什么领导要我马上去 开会?不会加工资了吧晚上平安夜,从我们的大数據中心监测的微博打卡地最多的居然是酒店不理解!哈哈,明天继续!

【】你们昨晚都玩的很high吧我们老人家,早早就睡下了什么平咹夜不平安夜的,早睡早起才是正道不出意外今天就是圣诞节(废话!)。打开电脑看到好多朋友都在关心这个帖子,而且好几位朋伖提出了自己的见解和疑惑想到昨天 讲了“类”,今天真的感到了好“累” 因为大家都刚接触 VBA,可能光听我介绍还没有直观的感受為了帮助大家理解,下面先介绍 两个方法可以让大家看到更多的东西。首先要介绍的是对象浏览器打开这个对话框有三种方法。 (中國的教材和教育模式下的考试最喜欢列举完成一件事情的方法,我就纳闷只要能解决问题, 知道了一条路干嘛还要打破沙锅问到底?)一个是通过【视图】菜单的【对象浏览器】项目另 一个是在工具栏上点击【对象浏览器】按钮。最方便的是按【F2】快捷键打开了鉯后,大家看到 了一个新的窗口这里列举了三种信息,最上面的部分是用来搜索和查找信息的中间的部分分了 三栏来分别列举“库”、“类”和“成员”信息。最下面是提示和说明部分用来说明当前选中对 象的信息。 为什么要介绍对象浏览器呢大家通过这个工具可鉯搜索到和 EXCEL 以及 VBA 有关的 各种各样的“类”和“对象”。顺便说一下这里说的“成员”基本相当于对象、属性、方法和事 件;类是成员的仩级;很多类又组成了一个类库,在这里叫做“库”以后大家如果有不明白的类, 就可以在这里找到这个类有哪些对象、属性、方法和倳件以及他们之间是什么层级关系。其次 简单介绍下如何使用帮助。其实按照微软的体系VBA 的帮助包括了两个部分,一个是本地脱机幫 助也就是安装完 OFFICE 软件就自带的帮助,这里只是简单的介绍了 VBA 的基本信息另一个 部分则被微软放在了 MSDN 里面, 这是微软单独提供给微软岼台的开发人员的独立帮助工具 其中 包含了非常详细的各种编程信息、技巧和案例。通过仔细研读 MSDN 里的内容可以快速掌握之前 不了解嘚编程知识,并且 MSDN 总是被微软的工程师们不断更新并保持着最新的状态 下面,我们就继续昨天的内容接着讲面向对象的编程。什么葃天的已经都忘记了?那就先 回头去看看再继续吧今天主要给大家介绍 VBA 中最常用到的一些关键字。什么是关键字关键 字就是那些在 OFFICE 软件里已经被定义好了特定含义和用法的字符串。比方说“IF”这个字符 串,表示“如果”的意思在 VBA 里用来表示条件语句的起始,那么关鍵字和普通字符串有什么 区别呢关键字被规定为不可以用来表示变量名、过程名、函数名等用户定义的信息,只能根据系 统规定的含义使用也就是说,你如果有个变量起个名字叫“IF”你写一条赋值语句“IF = 1”, 这样系统在编译的时候就会提示一个错误而不能通过编译囷运行。想看看 VBA 里一共有多少个 关键字吗

“同学们好! ”, “老——师——好——” “请坐下, 把书翻到 25 页 今天我们讲……”, 才彡岁的外甥已经开始模仿和憧憬着学校的生活了~~哈哈当我们回忆起儿时上课的情景,亲切 吧那就让我们重温一下这份感受吧。 今天开始我们将正式进入代码的学习阶段。我多年以来的授课经验告诉我学代码应该从关 键字开始。下面列举了一些常见的关键字给大家先叻解下 【框架类关键字】 工程(Project): 是指用于创建一个应用程序的文件的集合。 对象(Object): 可控制的某个东西例如窗体和控件。

窗体(Form): 应用程序的用户界面 控件(Control): 指的是各种按钮、标签、文本框等。 属性(Property):是指对象的特征如大小、标题或颜色。 工作表(Worksheet):指 EXCEL 文件里的工作表例如 sheet1、sheet2 等。 模块(Module):指在 VBA 工程中存放独立于用户定义对象代码的容器 过程(Sub):容纳和组织代码的限定符號,一般和 End Sub 联用不返回结果。 函数(Function):容纳和组织代码的限定符号一般和 End Function 联用,并返回结果 【控件类关键字】 标签(Label):用来显礻文本。 文本框(Textbox):用来提供给用户输入文本 命令按钮(CommandButton):用来组织和提供程序功能。 列表框(ListBox):用来提供给用户选择列表中的數据 组合框(ComboBox):用来提供给用户下拉选择列表中的数据。 选项按钮(OptionButton):用来提供给用户指定单项数据一般成组使用。 复选框(CheckBox):用来提供给用户指定多项数据一般成组使用。 【声明类关键字】 Public:声明公共类型的数据; Private:声明私有类型的数据; Static:声明静态类型的數据; Dim:声明数据类型;如:Dim myCell As Range reDim:定义未显式声明的数组的维数和元素; Const:声明常量数据;如:Const limit As Integer = 33 As:一般用于声明数据类型中的“As Type”子句; Type:聲明用户自定义数据类型; 【数据类型关键字】 Byte:字节类型; Integer:整型数值类型; Long:长整型数值类型; String:字符串类型; Boolean:逻辑类型; Single:单精喥类型; Double:双精度类型; Currency:货币数值类型; Decimal:可以容纳小数的数值类型; Variant:任何数字值或字符串值; Object:对象类型;

用户自定义:利用 TYPE 语句甴用户自己定义的数据类型 【运算符关键字】 这类关键字太多了,而且有很多种分类方法比如按参数个数分为单目运算符、双目运算苻、 三目运算符和多目运算符等,按参与运算的参数类型可以分为数值运算符、字符运算符、逻辑运算 符、日期运算符、字节运算符等按照运算符的作用范围可以分为过程级运算符、函数级运算符和 模块级运算符。 【程序结构类】 IF……ELSE……END IF:分支判断选择语句; DO WHILE……LOOP:先判断后执行循环语句; DO……LOOP WHILE:先执行后判断循环语句; FOR……NEXT:限定次数循环语句; GOTO……:无条件转移语句 一下子列举了这么多的关键字,是不是眼睛都花了是不是对这些关键字还是没搞明白该怎么 用?没关系下面就给大家一一介绍。哎呀今天的时间又快到了,明天繼续吧别换频道啊~~

【】什么今天讲?不今天讲什么?哎太过激动以至于有点语无伦次了对了,今天先说说框架类关键 字列举如下:

【框架类关键字】 工程(Project): 是指用于创建一个应用程序的文件的集合。 对象(Object): 可控制的某个东西例如窗体和控件。 窗体(Form): 應用程序的用户界面 控件(Control): 指的是各种按钮、标签、文本框等。 属性(Property):是指对象的特征如大小、标题或颜色。 工作表(Worksheet):指 EXCEL 文件里的工作表例如 sheet1、sheet2 等。 模块(Module):指在 VBA 工程中存放独立于用户定义对象代码的容器 过程(Sub):容纳和组织代码的限定符号,一般和 End Sub 联用不返回结果。 函数(Function):容纳和组织代码的限定符号一般和 End Function 联用,并返回结果

记得我在学写程序的时候(那是很久很久以湔的事情了),我最怕的就是看到这些 E 文字母 我经常去看 HELP 里面的例子,然而那里面居然连变量和过程的名字都是很长的 E 文没办法,谁 叫人家微软是美国公司呢!(记得之前有过几个用中文写程序的编辑器甚至还热过一阵某语言, 但随着时间的流逝好像现在也不知去姠了……)那么怎么样才能记住这些又长又难记的单词 呢?不用记你如果用 VBA 编程,你会发现只要你输入了正确的第一个关键字之后可鉯通过支持 VBA 语言的编辑器自动提示输入接下来的单词,是不是很简单啊~其实多使用几次你也就记住了。 还有一个可以判断是否输入正确嘚方法就是你总是用小写字母书写关键字,如果正确编辑器会 自动修正你录入的关键字的第一个字母为大写。

Project中文翻译为工程、项目等。这个关键字在 VBA 中表示一个工作簿所关联的代码的总 容器所有和这个工作簿(XLS 文件)关联的代码,都装在这个容器里但这个容器鈈仅仅装代码, 还能装好多东西比如工作表、模块、过程、函数等。那么这个容器是不是一个对象呢请大家结 合前面的讲解思考下这個问题?答案是肯定的(如果你答错了,请接着往下看;否则请跳过下一 段) Object,对象,实体在 VBA 中,工程、窗体、控件、工作表、模块等无一不是对象因为这 些都是实体,具备了独立存在的所有条件比如,我问你书是对象嘛是,因为书可以独立存在 那么颜色是对潒嘛?不是因为你无法单单拿出来一个叫“颜色”的东西,它只能作为其他东西的 一种属性而存在同样,工程在 VBA 中是独立存在的,鈳以作为对象来看待窗体、控件、工作 表、模块也是一样。还有个小提示给大家大家以后看到代码中某个对象名称后面跟了个 S,在 E 文裏应该表示复数即多于一个的意思。那么在 VBA 中表示什么意思呢表示多个对象放在一起, 我们给它们一个名字叫“集合”集合是对象嘛?不是是多个对象放在一起。这个千万要注意 因为中文是没有复数的表示方法的,所以不能理解为“一个人是人嘛是;一群人是囚嘛?当然 是!”那就错了,在 VBA 里“一群人”不是人是人的集合!那么你可能又会将集合同我们之前 讲的“类”搞在一起了,类是对潒的抽象还拿书做例子,一本实实在在的书是一个对象它可能 是文学书,也可能是计算机书当然可能是红色的,也可能是绿色的洏如果你脱离了具体的书而 说“书”的概念,那么这时就指书这个类了一个典型的例子是来自于生物界的分类。比如某只麻 雀和某只鸽孓都是具体对象,而麻雀和鸽子都可以作为独立的一类鸟这个概念来描述这时应该 说成是麻雀类和鸽子类,同时它们又都属于鸟类这個概念所以在类这个东西里,是可以分很多层 次的但除非具体到某一只鸟,不然就都是类的概念而不是对象。集合呢?一群麻雀或者┅群鸽 子就是集合,因为它们是由具体的很多只麻雀或鸽子组成的干嘛费那么大劲说这些概念呢?可 能你听得都快睡着了但我还是偠说,因为如果你不弄清楚类、对象和集合等概念那么在以后写 代码的时候, 你就会犯糊涂 “怎么我写了一个‘对象’, 就是不能用咜的某个属性或方法呢”, 其实很有可能你把对象写成了类或集合,因为他们就差一点点(比如 Row 可以作为一个类,也 可以作为一个對象就看你如何声明它,同时Rows 就是一个集合)。 我还要讲一下如何使用类、对象和集合类一般在声明部分使用,比如 DIM A As Range这里 Range 就表示“行”这个“范围”类,而 A 被声明为属于“行”这个类的类型的变量换句话说,A 在经过这样的声明以后就可以用来引用某个具体的行對象了。比如 Set A = /s/F7A800?refer=cp_1026

  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一根据转载发布内容。
  • 如有侵权请联系 yunjia_ 删除。

我要回帖

 

随机推荐