文档库 最新最全的文档下载
当前位置:文档库 › 学习VBA的条件与方法

学习VBA的条件与方法

学习VBA的条件与方法
学习VBA的条件与方法

第一课是:学习VBA的条件与方法

先介绍一些我个人的观点以后再进入实际的编写过程。

今天主要是两个内容:学习VBA的条件与方法。

但是在这前先谈谈另一个问题:正确认识VBA。

先谈谈“正确认识VBA”

VBA是VB的一个分支,不过VB已经淘汰多年,不再升级,而VBA却一再地升级。

鉴于VBA的强大和易学性,VBA已集成在很多应用程序中包括CAD、CoreDraw、WPS(免费版本中不提供)、PowerPoint、FrontPage、Word、OutLook、Excel等等软件之中。

不过只有Excel VBA才被大家发扬光大,这一方面是基于Excel的用户群体较大,工厂对表格设计的需求也大,另一完方面也是Excel VBA的完善性所致。

同样版本的VBA在不同软件中的表现是不同的,例如WORD 2010中的VBA就比Excel 2010中的VBA差。

对于WORD VBA,我的了解并不多,只做过一次菜单。

大概两个月前,ET论坛有一个人找我帮他有偿设计一个多菜单模板,当时只说了价格,没有说明是WORD还是Excel,我用就Excel VBA做了下面的这个模

板给他,让他自己按实际需求修改一下名字就行了。

对方当时就说是这个效果,不过要用WORD做。我想同样版本的VBA在菜单不可能有什么差异,就马上改用WORD帮他设计。

经过几多周折才做到,不过WORD中有很多属性都不支持,明明帮助中说有这个属性,但复制帮助中的代码就不能实现同等效果。

东莞罗刚君 20:06:44

这其实也从侧面反应了WORD VBA用户太少,那么BUG反馈就少,修正错误的机会也少了,从而使WORD的VBA一直不好用。这就是恶性循环。

Excel的用户多,很多问题都得到了及时地纠正,所以Excel的VBA也最完善。

VB停留在6.0版后就永远地停止开发了,不再更新,

而Excel 2003的VBA版本是6.05,Excel 2007和Excel 2010的VBA版本是7.0,Excel 2013的VBA版本是7.01。说明微软一直在重视VBA的应用。要获得您所用Excel VBA的版本请先按我说的设置:

东莞罗刚君 20:07:58

将“信任对VBA工程对象模型的访问”打勾。

操作方法是使用“Alt+T+O”组合键打开Excel选项,然后找到“信任对VBA工程对象模型的访问”复选框,将它打勾。

这是效果图

大家先设置一下我们再进入下一步关闭对话框回到工作表界面,再按“Alt+F11”组合键打开VBE窗口(即VBA代码编辑界面),单击“插入”→“模块”,然后代码窗口中录入以下代码:

Sub 测试VBA版本()

MsgBox Application.VBE.Version

End Sub

最终效果如上图所示

录入完代码后,光标定位于代码中任意位置,按“F5”键执行代码,也可以按工具栏中的执“运行”按钮()执行代码。代码执行的结果就是当前VBA 的开发版本号了如果按我前面说的把那里打勾应就不有错误

看上图模块是专门放代码的地方

以后会讲到什么代码放在什么地方,现在暂不管这个,知道版本号就行了

以上仅是说明了VBA一直在进步、在发展,那么Excel VBA应该如何理认识、理解它呢?

可以这样看:Excel VBA就是Excel的功能之一,它们是从属关系,和条件格式、透视表、图表一样附属在Excel中,用于实现某个方面的功能。所以Excel VBA不能看做一个软件,它只是Excel软件的附属功能之一。只不过由于VBA实在过于强大,大家通常不会将它与条件格式、图表等功能平等对待。

所以Excel VBA不能看做一个软件,它只是Excel软件的附属功能之一。只不过由于VBA实在过于强大,大家通常不会将它与条件格式、图表等功能平等对待。

当然,尽管VBA能做任何事,但是实际工作中我们仅用VBA来做三类事:一是非VBA无法完成的事,例如对选区进行背景着色,单击任意单元格,该单元格所在行、列自动着色,效果请参考动画:

https://www.wendangku.net/doc/b69494582.html,/GIF/anniu/Beijing.gif

二是虽然Excel自带的多个功能组合可以完成,或者可以手工实现,但是利用VBA可以百倍、千倍提升效率的事。

例如B2:Z10000区域中是成绩表,要求选中其中所在小于60分的成绩,Excel没有任何工具可以实现这个功能(筛选只能单列有效,查找只支持“等于60”这种条件,不支持“小于60”这种条件……),所以这类事需要交给VBA来实现,1秒钟就完成。例如Excel百宝箱中的“高级定位”就支持这个功能,可以采用大于、等于、小于、不等于等运算符,而且支持双条件定位。具体请看动画:

https://www.wendangku.net/doc/b69494582.html,/GIF/anniu/DanDW.gif

再如A列中有1000个产品的名称,要求将这1000个产品对应的图片导入到单元格的批注中,鼠标指向产品名称时就显示该图片……

大致这种效果

Excel百宝箱中有这个功能,参看动画:

https://www.wendangku.net/doc/b69494582.html,/GIF/Pic/PIZHU.gif

在本人《Excel VBA程序开发自学宝典(第2版)》图书中也有这个工具(包括前面的高级定位工具)的源代码,和设计思路分析。东莞罗刚君三是Excel的某些功能做得不如人意,无法满足工作需求,我们可以采用VBA来改进它。例如A列是姓名,B列是工号,要求输入工号重复时弹出警告提示……说到这里大家一定马上想到“有效性”。

诚然,有效性可以实现这个功能,但是有效性极易遭到破坏,当复制其它区域的工号到B列中,设置好的有效性就不再生效了,而改用VBA实现则可以

突破这个屏障。

Excel百宝箱中也有这个功能,请参阅操作动画,从而更全面的了解VBA 所具备的功能:

https://www.wendangku.net/doc/b69494582.html,/GIF/weiyizhi/jinzhiCF.gif

除了以上三类操作,其它功能VBA虽然都可以实现,但是不宜采用VBA来做,而是尽量调用现成的菜单或者按钮,毕竟不需要重写代码。

东莞罗刚君 20:20:23

简单而言,对于制表而言,VBA什么都能做,但我们只用VBA处理两类事:一是高难度问题,二是提升工作效率,让重复性的、需要大量时间的工作瞬间完成。

明白VBA能实现什么很重要,我们才能对它有清晰地定位,不致于盲目地推崇VBA,也不致于说“懂函数就够了”或者“透视表才是Excel的精华”……接下来要讲的是一个大家很想了解的又从来没有一个权威机构说明过的一个概念:VBA与宏是什么关系?

首先声明,我并是VBA界的权威,我只是说说我自己的理解,同时方便大家记忆:宏是VBA的前身,VBA的初级阶段,它不属于编程。而VBA则是编程的范畴了。

假设某人只能录制宏、调用代码,那么我们称之为“使用宏”,而某人录制宏后可以修改宏代码或者纯手工编写代码,那么此时他在“使用VBA”。

这样说应该比较容易理解吧?

现在进入第二个环节:学习VBA的条件

一直以来,对于学习VBA需要具备什么条件,有太多的说法。包括:会英语、懂VB、C+、有编程基础、计算机专业之类。

一看这条件就吓退了很多人,我本人每一条都不符合:初中毕业,不懂任何程序语言,初中学的英语单词还会写的就10多个吧,包括OK、YES、NO、ByeBye、Good、love You之类……

我个人对于学VBA的条件的看法是:

懂得Excel的基作操作,包括条件格式、自定义单元格格式、排序、筛选、插入图片/图表、数据有效性、新建工作表、页面设置,会简单的函数、设置Excel选项。

因为Excel VBA编程,其实就是操作工作表、单元格、字符串、图片、图表等等

VBA主要就5个知识点:

对象、属性、方法、事件和操作语句(防错语句、条件语句、循环语句、With语句、输入输出语句等)

而熟悉Excel基础操作的用户,相当于已经会了对象、属性和方法,事件的知识点较少,两三天就会了,剩下的就只有操作语句了(防错语句、条件语句、循环语句、With语句、输入输出语句等)。

换言之,还还没有学一分钟VBA,但是VBA的60%内容你都已经会了。想想VBA是不是世上最容易学的编程语言呢?

或者有人说会我会条件格式、自定义单元格格式、排序、筛选等等,但我仍然不懂得编程,放心,只要你懂这些,听了我的后面的课后一小时内你就足以将它们转换成程序,即懂得基础操作就懂得了于少60%的VBA,你需要做的就是如何将基础知识转换成VBA代码,以及学习剩下的40%内容。

可以假设一下,A完全不懂Excel,但他懂英语,B完全不懂Excel,但是他懂C+或者C#,C完全不懂C+、VB、C#和英语,但他对Excel的基础操作很熟练,那么我可以断言,三个人中C学VBA最快,而且快很多很多。

因为Excel VBA的优势在于可以通过录制宏产生代码,而懂得了Excel的基础操作后,60%以上的代码就已经学会了,想要什么就录什么。

例如不懂得VBA中“有效性”对应的代码怎么写,那么花10秒钟录一下就有代码了,对代码按F1就明白代码的含义了。

而对于A和B两人而言,连Excel有中没有“有效性”都不知道,更不知道Excel有录制宏这个东西,也找不到对应的菜单,完全白纸一张,必须从零开始。

在后面有专门一节课讲述录制宏,不会的同学也不用着急,本节课仅仅聊下天而已,不涉及编程操作。

在我的《Excel VBA程序开发自学宝典(第2版)》书中有一个序“VBA是什么.txt”,更详细地讲到了这些观点,我先上传一下,大家可以课后看看。

接下来讲讲另一个主题:

学习VBA的方法

前面讲述了VBA的条件,让大家有信心学习VBA——其实学习VBA的条件就懂Excel的基础操作,基本上进本群的人都会。不过除了基础之外,想要学好VBA,还得具备耐心、兴趣和逻辑性。

耐心:当代码出错时,往往需要在几十行代码中查找哪一句造成的,需要极强的耐心,想速成者多半不可能有啥成就。

兴趣:和耐心差不多,因为你对它有足够的兴趣,那么自然就有耐心了,遇到问题时不会退缩,甚至每解决一个问题还会兴奋,那么学习起来自然就高效多了。

代码出错是很常见的事,对VBA兴趣够浓者,不会因为初学时代码常出错而放弃。

逻辑性:编程就是逻辑性的最佳体现,你的逻辑性是不是够好,直接决定了你是否宜合编程。虽然逻辑一般也可以编程,但是要写出兼容性好、纠错性、效率高的代码是就太有挑战性了。

很简单的一个了解你自己是否有逻辑性的方法(其实上看你平常做事的习惯):

当你向他人提问时,是否有过问过对方一个问题后,对方看不明白,你再对问题追加条件,对方仍然不明白(或者对方回答了你后),你再继续追加条件,多次反复后才将一个原本一次就足以描述清楚的问题表述完整。

再如你做事时是否有“先这样吧”、“船到桥头自然直”、“到时再说”,如果有这种习惯,那么很难编出优秀的程序。

编程时,我们要处处做最坏的打算,假设用户是一个白痴,一切最坏的情况都可能发生那么作为程序员必须在代码中加足够多的IF语句,假设遇到什么条件该如何处理,假设遇到另一个情况又以如何处理,如果还有第三种情况,需要如何防范……一切意外处理好后才是正常的操作代码。

上图是《Excel 2010 VBA编程与实践》书中案例7第15页“如何开发完善的程序”的源代码。

要求是弹出输入框,在里面输入一个数值,然后对它开平方,将运算结果保存在活动单元格中。

要求很简单,但是使用了六个IF语句判断各种意外情况,不同的意外给出不同的处理方式或者提示自己信息,让用户明白错在哪里,应如何修正……

事实上完全按照要求编代码仅用一句就足够:

Sub 输入一个数值然后获取其平方根()

ActiveCell.Value = Sqr(InputBox("请输入数值:", "待开方之数值", 0))

End Sub

执行代码能获得上图中同等效果,但是用户一旦不按照程序员预想的方式操作就会麻烦接连不断……

所以,想学好VBA,必须有这种良好的习惯:

每一步皆有依据,每一个操作都预先做最坏的打算,做好防错工作,让操作员操作失误时能得到人性化的提示或者指引。而不是走一步看一看,等用户反馈问题后再去处理。

现在言归正传,讲述应该如何学习VBA。

1.端正心态。

你是在学习一门编程技术,而不是仅止于解决当前工作中的某个疑难。

必须有这种心态才可能学好VBA。心态不同,接收知识时关注度和耐心都不同,遇到问题时处理问题的极积性也不同。

2.不要迷恋视频教学

视频教学是针对操作性强的技术,包括条件格式、图表、透视表看,没什么理论可言,看他人操作几次就学会了。

而编程则刚刚相反,理论远远胜过操作,懂得理论才可能编程,否则你只能解决当前问题罢了,而编程是处理一类问题,而不仅限于当前问题。

条件格式、透视表之类,看我操作几次就能学会,但是如果你只看我编程处理问题的过程,而不从最基本的变量、数据类型、什么是方法、事件等开始,那么看100次仍然不可能学好编程。

编程,重点全在文字理论上,前期50%工作都是理论,后期才涉及操作,所以想仅仅通过看视频学好VBA,而不想看文字者,最终学会VBA的几率一定小于10%。

可以这样说:只要认真看文字说明(包括书、F1帮助、百度等等)不看任何一集视频,是可以学会VBA的,至于是否能学好,还取决于其它一些条件,包括前面所讲的耐心、兴趣、逻辑性等等。但是只看视频教材,不看任何文字教材,就算把世上一切视频看完,仍然不太可能学好编程。

基于三个原因:

(1)视频对于编程理论的表现力差,它更偏重于操作性强的问题,纯理论的

部分通常都不录。所以等于看视频学习,直接跳过了最重要的、最基础

的层面,直接进入了中级,那么基础不好的前提下是不可能有最终成就

的。

(2)视频的内容少,通常文字一页的内容,视频要很久才能体现完整,所以

往往看了几十集视频后,发现讲的内容很少。

(3)现实中,视频往往都是出书的作者录制的,包括ET、EH和EP论坛,而

录制视频的最终目的就决定的视频的质量(书都出售,而视频是赠送)。

所以看完视频后仍然不可能学会编程。所以,在初期学VBA时,切不可拒绝文字理论,只喜欢视频。

3.要学会看帮助。

很多人只接受他人现场指点或者视频教学,而拒绝查帮助,事实上帮助是世上最权威、最全面、最方便的教材。帮助中有一切对象、属性、方法、事件的写法与用法解释,部分还提供案例。

很多人只接受他人现场指点或者视频教学,而拒绝查帮助,事实上帮助是世上最权威、最全面、最方便的教材。帮助中有一切对象、属性、方法、事件的写法与用法解释,部分还提供案例。

例如工作表函数Trim是干用的?你问很10个人,可能八九人都告诉你是删除空格的,而事实上这个答案是错的。

如果你有查帮助的习惯,那么你接受的知识将是正确的:“除了单词之间的单个空格外,清除文本中所有的空格。”(当然帮助是也有错误,但极少,比想网友们随口说一句出错的机率小多了)

在下一节课中将讲述如何获得帮助,会有很多查询帮助的小技巧。本节课你明白帮助的重性即可。

简单地讲,一个不会查看帮助的人,学好编程的几率一定小于10%。条件格式、图表、透视表之类例外,那些知识不需要帮助,试几次就会了。

4.懂得录制宏。

录制宏很多人都会,但是把录制宏的功能发挥好的人却不多。经常有人说录制的宏没用,明明录制时是好的,重新调用时就不行了。或者刚录完可以用,复制到新工作表中就不能用了……这是对录制宏的认识上有偏差。

这一点必须记住,相当的重要。

录制宏的目的是通过录制宏取得被录制对象的名称,包括操作对象、方法、属性的写法、参数、语法等等,然后根据宏代码做相应的修改。

也就是说,录制宏能帮助我们记忆对象、方法和属性,我们要学的是如何修改它,完善它,而不是直接使用宏,或者直接编写一段代码。

例如:

将“成绩”表中的成绩筛选出大于90分的,然后复制,选择性粘贴到“优秀”工作表中,那么你只需要录制宏就产生了区域引用的写法,以及筛选、复制、粘贴以及工作表引用等等代码,这里面包含了对象、方法和属性,一个都不需要记,全自动产生,把编程的工作量降低到了40%以下。

我本人虽然VBA编程有接近7年了,写了5本关于VBA的书,但是排序、筛选、有效性、条件格式等应该如何写代码一个都不记得。这并不夸张,因为一次都没有写过,完全没有必要自己写。

当工作中需要编写这些代码时,录一下就自动产生代码了,实在不值得花任何时间去记忆。而Excel 可以录制的内容太多太多了,只要能录的就不要去记,把时间放在其它地方。

不管我以后学到什么层度,对VBA了解多深,每次写代码,我都是录制宏开始.....

避免手工书写,也避免背代码...

几个主要对象的名字,例如应用程序对象Application、工作簿对象Workbook、工作簿集合Wworkbooks、工作表对象workSheet、工作表对象集合、单元格对象Range、单元格对象集合Cells、图形对象Shape、工作表函数对象WorksheetFunction,记得以上几个名字后,这些对象的属性、方法、事件就全出来了。

例如要理解Range对象有哪些方法、有哪些属性?在代码窗口中输入Range.即可(后面有一个小圆点)

VBA自动产生所有方法名称和属性名称,至于这些名称的含义是什么,F1里面全都有详细的解释。

也就是说:记Range对象名称,仅仅一个单词,相当于记住了它相关的对象和方法(必要时录制宏也行)。

请大家按上图操作一次

输入range.

看看是不是有提示

当然,当你记住了Range这个单词,那么打开VBA有帮助,输入关键字“Range对象成员”,那么与Range相关的一切方法、属性、事件都出来的,有详细的解释。

再来一个....

也就是说:只记关键字,四两拨千斤,以一敌万。而不是全面背诵。

(2)记几个常用语句的写法,包括:

条件语句IF Then…Else

循环语句:For Next、For Each…Next、Do Loop

纠错语句:On error resume next、On Error Goto Line、Err.Clear

输入语句:Application.Inputbox

输出语句:Msgbox、Debug.Print

关闭屏幕新语句:Application.ScreenUpdating

关闭事件语句:Application.EnableEvents

关闭提示框语句:Application.DisplayAlerts

取多区域的合集与交集:Intersect、Union

(3)常用的几个函数:

Dir 函数、Evaluate函数、Split函数、Shell 函数、InStr函数、Replace函数

也就是说,学VBA时,需要记的就二三十个单词而已。对于数据类型名称及其范围,打印出来放在桌上或者钱包中,或者拍成图片放在手机中,在手机中随时都可以查阅,而不需要花时间记长整型怎么写?有效范围是什么?简写代码是哪一个?

内容参考下图:

5.做笔记

笔记对于编程而言太重要了。收集已经编好的代码,代码中需要有详细的注释、编程思路,并分类保存。

例如窗体类、事件类、文件类、查找类、自定义函数类…

以后遇到相近的需求时复制代码出来,并做小小改动即可,从而既节约时间,又避免出错/以及避免耗力记忆代码。

当你有好的笔记后,一旦学会了某个知识点(例如生成自定义菜单),那么一生都不用再管它了,不值得为它花一分钟去记,因为下次复制出来就可以用,改一下菜单名字罢了。从而事半功倍。

其次是,做笔记之前一定要测试好代码,确保其兼容性、准确性,并有完善的注释。

就和操作系统的Ghost备份一样,一旦做好了备份,以后重装系统就三五分钟,而且总是保留你的一切操作习惯,远比全新安装系统更好。

6.多交流

在处理相同问题时,往往不同人有不同的思路,可能当前的代码自认很完善了,但与他人交流后,发现天外有天他人不一定比你厉害,但是可能站的立场不同,看问题的方式不同,可以提供全新的思路。

另外附加一点,各位如果有买编程方面的书,一定要选择能与作者交流的书,不管是邮件、论坛、QQ群、FaceBook皆可。

因为作者的某些思路你可能看不懂,需要勾通,还可能书中有笔误,需要向作者反馈,双方都可有促进作用。

勾通、交流真的很重要

今天的课就讲这么多,下结课讲如何获得VBA帮助

再之后是编程的一些语法、思路了。

Excel VBA实例教程 #055:在工作表中添加艺术字

工作表中的多个图形,如果使用系统缺省名称,如“文本框1”、“文本框2”这样前面是固定的字符串,后面是序号的,可以使用For...Next 语句遍历图形,如下面的代码所示。 1.Sub ErgShapes_1() 2. Dim i As Integer 3. For i = 1 To 4 4. Sheet1.Shapes("文本框 " & i).TextFrame.Characters.Text = "" 5. Next 6.End Sub 代码解析: ErgShapes_1过程清除工作表中四个图形文本框中的文字。 第3行到第5行代码,使用Shapes属性在工作表上的三个图形文本框中循环。 Shapes属性返回Shapes对象,代表工作表或图形工作表上的所有图形,可以使用Shapes (index)返回单个的Shape对象,其中index是图形的名称或索引号。 返回单个的Shape对象后使用TextFrame 属性和Characters方法清除文本框中的字符,关于Shape对象的TextFrame 属性和Characters方法请参阅技巧53 。 如果图形的名称没有规律,可以使用For Each...Next 语句循环遍历所有图形,根据Type 属性返回的图形类型进行相应的操作,如下面的代码所示。 1.Sub ErgShapes_2() 2. Dim myShape As Shape 3. Dim i As Integer 4. i = 1 5. For Each myShape In Sheet1.Shapes 6. If myShape.Type = msoTextBox Then 7. myShape.TextFrame.Characters.Text = "这是第" & i & "个文本框" 8. i = i + 1 9. End If 10. Next 11.End Sub 代码解析: ErgShapes_2过程在工作表中的所有图形文本框中写入文本。 第5行代码使用For Each...Next 语句循环遍历工作表中所有的图形对象。 第6行到第9行代码如果图形对象是文本框则在文本框中写入文本。其中第6行代码根据Type属性判断图形对象是否为文本框,应用于Shape对象的Type属性返回或设置图形类型,MsoShapeType类型,请参阅表格54 1 。 第7行代码根据返回的Type属性值在所有的文本框内写入相应的文本,如图1所示。

Excel_VBA实例教程_查找单元格

Excel VBA实例教程查找单元格 1、使用Find方法 在Excel中使用查找对话框可以查找工作表中特定内容的单元格,而在VBA中则使用Find方法,如下面的代码所示。 01.Sub RngFind() 02. Dim StrFind As String 03. Dim Rng As Range 04. StrFind = InputBox("请输入要查找的值:") 05. If Trim(StrFind) <> "" Then 06. With Sheet1.Range("A:A") 07. Set Rng = .Find(What:=StrFind, _ 08. After:=.Cells(.Cells.Count), _ 09. LookIn:=xlValues, _ 10. LookAt:=xlWhole, _ 11. SearchOrder:=xlByRows, _ 12. SearchDirection:=xlNext, _ 13. MatchCase:=False) 14. If Not Rng Is Nothing Then 15. Application.Goto Rng, True 16. Else 17. MsgBox "没有找到该单元格!" 18. End If 19. End With 20. End If 21.End Sub 代码解析: RngFind过程使用Find方法在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值,并查找该值所在的第一个单元格。 第6到第13行代码在工作表Sheet1的A列中查找InputBox函数对话框中所输入的值。应用于Range 对象的Find方法在区域中查找特定信息,并返回Range对象,该对象代表用于查找信息的第一个单元格。如果未发现匹配单元格,就返回Nothing,语法如下: 01.expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat) 复制代码参数expression是必需的,该表达式返回一个Range对象。 参数What是必需的,要搜索的数据,可为字符串或任意数据类型。 参数After是可选的,表示搜索过程将从其之后开始进行的单元格,必须是区域中的单个单元格。查找时是从该单元格之后开始的,直到本方法绕回到指定的单元格时,才对其进行搜索。如果未指定本参数,搜索将从区域的左上角单元格之后开始。 在本例中将After参数设置为A列的最后一个单元格,所以查找时从A1单元格开始搜索。 参数LookIn是可选的,信息类型。 参数LookAt是可选的,可为XlLookAt常量的xlWhole 或xlPart之一。 参数SearchOrder是可选的,可为XlSearchOrder常量的xlByRows或xlByColumns之一。 参数SearchDirection是可选的,搜索的方向,可为XlSearchDirection常量的xlNext或xlPrevious 之一。

Excel VBA实例教程指南

Excel VBA教程之一:写在前面 VBA功能如何强大,这已勿庸费言,但如何才能很快进阶,写出自己满意的程序,却取决于个人努力和悟性。我下了很大功夫却收效甚微,有时,高手一句点拨却胜读三天书。所以,我把个人学习所得作一点整理,希望有助于后学。 只所以会有看书没用之感,一来是因为市面(我国)上大多数计算机类图书多为粗制滥造之作(这话稍有唐突),二来因为计算机这东西太呆板,不见得新出现的问题就能立即得到某本书籍上的解释,新问题总是层出不穷的。 想把一门编程语言全部搞懂,再去写点程序,是一个十分愚蠢的想法。你想盖房子,难道你想先学会制造砖头、玻璃等?我承认,把语言弄懂再做事情会很顺手,但是,你知道吗,有多少人在弄懂一门晦涩难懂的语言之前就放弃了呢?比如,什么叫面向对象编程?OOP和以前的流线性编程有什么异同?我还是大力提倡学以致用,别指望什么事你都能成专家,计算机世界的“罗氏定理”就是:“毕其一生,不能穷其万一”,你记住了吗? 那么,对于没有编程基础的人,怎样才能进步得快呢?我有几点思考: 1.你一定要带着明确的目的去做一件具体的事。这样,才会在做的过程中发现问题,并逐步去解决这些问题。比如,我想做一个《学生成绩分析系统》,我就会想到怎么才能把学生分数分成不同的班、怎么才能算出总分、平均分、标准差等、怎样比较各班的情况,怎样用图形显示更直观,怎么样才能把某个学生的历次成绩放在一起比较等。 2.你动手去做一做,一点一点地完成你上面的设想,不必因为这个大工程没做出来而忽略你在局部的突破,这样,你会越来越有信心,这就够了,还有什么比有信心做事的感觉更好的了吗? 3.合理及时利用网络资源,这绝对是个好东西,或许你看起来很了不起的问题,在别人看来简直不算什么,一定会有人为你解答。上网并不只是QQ和game啊!同时要好好利用软件的帮助系统,这才是最权威的解释,很多计算机书籍抄自帮助,你想,微软的专家写的,绝对原创,他还能去抄谁? 4.做了一些工作之后,再回过头来看书,就会感觉很亲切,觉得写书的人原来也不是一无是处,也是很辛苦的(不要过分自我批评了)。不过,要看书,计算机类的,我百分之一万地推荐你看外国人写的,首先,软件是人家编的,当然更了解。其次,外国人写的,又被介绍到中国来,也是比较优秀的了。三来,我确实作过对比,看老外的书收益最大。语言不通的问题怎么办?金山词霸一下呗。 我为什么要写这个东西?一是因为我想帮助别人,二是因为我想因此促进自己,三是因为我反感某些号称程序员的家伙,似乎编程是一件多么了不起的事,用一些极端人士的话来说:“编程有什么了不起?不就是判断和循环吗”,说得很有道理,从本质上说,计算机就是在做判断和循环,不信你就跟着我来吧。 好了,Let’s go Excel VBA教程之二:从一个界面设计开始 一个好的软件,除了运算速度快、体积小后,更重要的是,它的用户界面是不是很友好、亲切,“友好、亲切”这样的词汇在开始接触计算机语言时,感觉很好笑,但现在不一样了,我感觉这两个词最贴切!界面友好,就是引导用户能很快找到他需要的服务,最能想到他的心思,最体贴他,让他不时地心动,不时地赞叹!界面友好,就是能让用户在不经意间学到好多知识,无形中丰富了他自己,让他有美的享受!界面友好,还在于一目了然的界面却能让他需要的功能呼之即来,挥之即去!如此等等。 那么,我想做一个《学生成绩分析系统》,我该怎么做呢? 以下的界面你满意吗?

Excel VBA实例教程 #060:使用VBA自动生成图表

在实际工作中我们常用图表来表现数据间的某种相对关系,一般采用手工插入的方式,而使用VBA代码可以在工作表中自动生成图表,如下面的示例代码。 1.Sub ChartAdd() 2. Dim myRange As Range 3. Dim myChart As ChartObject 4. Dim R As Integer 5. With Sheet1 6. .ChartObjects.Delete 7. R = .Range("A65536").End(xlUp).Row 8. Set myRange = .Range("A" & 1 & ":B" & R) 9. Set myChart = .ChartObjects.Add(120, 40, 400, 250) 10. With myChart.Chart 11. .ChartType = xlColumnClustered 12. .SetSourceData Source:=myRange, PlotBy:=xlColumns 13. .ApplyDataLabels ShowValue:=True 14. .HasTitle = True 15. .ChartTitle.Text = "图表制作示例" 16. With .ChartTitle.Font 17. .Size = 20 18. .ColorIndex = 3 19. .Name = "华文新魏" 20. End With 21. With .ChartArea.Interior 22. .ColorIndex = 8 23. .PatternColorIndex = 1 24. .Pattern = xlSolid 25. End With 26. With .PlotArea.Interior 27. .ColorIndex = 35 28. .PatternColorIndex = 1

EXCEL宏编程简明教程(有实例),

Excel宏编程简明教程 一)、宏学习 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏: 点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿: Workbooks、Workbook、ActiveWorkbook、ThisWorkbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic 代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks (1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。 2、工作表: Worksheets、Worksheet、ActiveSheet

Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets (1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置: 第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是: 在使用过程中Excel会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。 3、图表: Chart、Charts、ChartObject、ChartObjects、ActiveChart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index)可引用单个Chart 图表,其中index是该图表工作表的索引号或名称;如Charts (1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts (1)是工作簿中第一个(最左边的)图表工作表; Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。利用ChartObject可以控制工作表上嵌入式图表的外观和尺寸。

Excel VBA实例教程 #022:选择工作表的方法

在VBA中需要激活或者选择某个工作表时使用Select方法或Activate方法,如下面的代码所示。 1.Sub SelectSh() 2. Worksheets("Sheet2").Select 3.End Sub 4.Sub ActivateSh() 5. Worksheets("Sheet2").Activate 6.End Sub 代码解析: SelectSh过程使用Select方法选择“Sheet2”工作表,而ActivateSh过程则使用Activate 方法选择“Sheet2”工作表,从表面看两者的作用是相同的,但是如果“Sheet2”工作表是隐藏的,Activate方法可以正常运行,而Select方法将会出现错误,如图1所示。 图 1 Select方法无效提示 如果需要同时选中工作簿中的所有工作表,则只能使用Select方法而不能使用Activate 方法,如下面的代码所示。 1.Sub SelectShs() 2. Dim Shs As Worksheet 3. For Each Shs In Worksheets 4. Shs.Select False 5. Next 6.End Sub 7.Sub SelectSheets() 8. Worksheets.Select 9.End Sub 10.Sub ArraySheets() 11. Worksheets(Array(1, 2, 3)).Select

12.End Sub 代码解析: SelectShs过程遍历工作表并使用带参数的Select方法选中所有工作表。应用于Worksheet对象的Select方法的语法如下: Select(Replace) 参数Replace是可选的。如果该值为True,则用指定对象替代当前选定对象。如果该值为False,则延伸当前选定对象以包括任何以前选定的对象。 SelectSheets过程使用Worksheets集合的Select方法选中集合中所有的对象。 ArraySheets过程使用Array 函数返回工作簿中的前三张工作表并使用Worksheets集合的Select方法选中前三张工作表。

excel2010 vba笔记 (实战教程)(基础实例)

VBA笔记 8-21 1.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 //表示无论选择哪个单元格,最后都只作用于A5 With Selection.Interior//设置属性在选择区域的内部(开始录制属性) .ColorIndex = 3 //颜色为3号色:红色 .Pattern = xlSolid //区域内部图案=纯色(录制时自动生成,可删) PatternColorIndex = xlAutomatic //内部图案底纹颜色=自动(自动生成,可删) End With //结束属性录制 End Sub//结束宏录制 一个名为练习的宏: Sub 练习() ' ' 练习宏 ' ' With Selection.Borders(xlEdgeLeft) .LineStyle = xlContinuous .ColorIndex = 0

Excel VBA基础教程两篇

Excel VBA基础教程两篇 篇一:Excel VBA基础教程 Excel VBA教程是把VB编程应用在Excel平台的一套实用教程,Excel +VBA双剑合壁,他可以帮助我们实现Excel原本实现不了的功能,可以让工作变得更高效,可以让操作变得变方便,可以把重复性的操作变得更有趣,随心所欲的定制自己的工作平台,还可以针对企业来开发各种系统如,人事管理系统、仓库系统、进存销系统等,对于经常要处理大量数据工作的朋友,学会了这套VBA教程你的工作将游刃有余。 标题 Excel VBA基础教程 Excel VBA基础教程 第一章:Excel VBA基础知识 1-1、Excel VBA教程简介 1-2、宏在工作中的运用

1-3、Excel VBA基础 1-4、Excel VBA窗口介绍 1-5、Excel VBA代码编写规则1-6、对象 1-7、属性 1-8、方法 1-9、常量与变量 1-10、数据类型 1-11、判断语句之IF 1-12、判断语句IF之多条件1-12B、If条件判断小结

1-13、判断语句之SELECT 1-14、循环语句之DO...LOOP 1-15、循环语句之DO...LOOP实例 1-16、循环语句之DO WHILE...LOOP 1-17、循环语句之DO UNTIL...LOOP 1-18、循环语句之WHILE与UNTIL位置变化1-18B、DO...LOOP 语法小结 1-19、.循环语句之FOR EACH...NEXT 1-20、循环语句之FOX...NEXT 1-20B、For...NEXT小结与实例 1-21、用语句FOR...NEXT制作九九乘法表

Excel VBA实例教程 #036:复制自动筛选后的数据区域

用户在对如图1所示的数据列表进行自动筛选后,往往希望将自动筛选的结果复制到其它地方。 图1 筛选结果 这时可以通过获取该列表区域中可见单元格的方法得到筛选结果的单元格区域,并复制到工作表Sheet2中,如下面的代码所示。 1.Sub CopyFilter() 2. Sheet2.Cells.Clear 3. With Sheet1

4. If .FilterMode Then 5. .AutoFilter.Range.SpecialCells(12).Copy Sheet2.Cells(1, 1) 6. End If 7. End With 8.End Sub 代码解析: CopyFilter过程将Sheet1表中的筛选结果复制到工作表Sheet2中。 第2行代码清除Sheet2表中数据。 第4行代码判断Sheet1表是否处于自动筛选状态。FilterMode属性返回工作表是否处于筛选模式,如果指定工作表中包含已筛选序列且该序列中含有隐藏行,则该值为True。 第5行代码通过AutoFilter对象的Range属性返回工作表的自动筛选列表区域,再使用SpecialCells方法获取该列表区域中可见单元格(SpecialCells 方法请参阅技巧4 ),得到筛选结果的单元格区域,然后使用Copy方法将结果区域复制到工作表Sheet2中,应用于Range对象的Copy方法将单元格区域复制到指定的区域或剪贴板中,语法如下: expression.Copy(Destination) 参数expression是必需的,该表达式返回一个Range对象。 参数Destination是可选的,指定区域要复制到的目标区域。如果省略该参数,则将该区域复制到剪贴板中。 运行CopyFilter过程工作表Sheet2如图2所示。

Excel_VBA编程常用实例(150例)

Excel_VBA编程常用实例(150例) 主要内容和特点 《ExcelVBA编程入门范例》主要是以一些基础而简短的VBA实例来对ExcelV BA中的常用对象及其属性和方法进行讲解,包括应用程序对象、窗口、工作簿、工作表、单元格和单元格区域、图表、数据透视表、形状、控件、菜单和工具栏、帮助助手、格式化操作、文件操作、以及常用方法和函数及技巧等方面的应用示例。这些例子都比较基础,很容易理解,因而,很容易调试并得以实现,让您通过具体的实例来熟悉ExcelVBA编程。 ■ 分16章共14个专题,以具体实例来对大多数常用的ExcelVBA对象进行讲解; ■ 一般而言,每个实例都很简短,用来说明使用VBA实现Excel某一功能的操作; ■ 各章内容主要是实例,即VBA代码,配以简短的说明,有些例子可能配以必要的图片,以便于理解; ■ 您可以对这些实例进行扩充或组合,以实现您想要的功能或更复杂的操作。VBE编辑器及VBA代码输入和调试的基本知识 在学习这些实例的过程中,最好自已动手将它们输入到VBE编辑器中调试运行,来查看它们的结果。当然,您可以偷赖,将它们复制/粘贴到代码编辑窗口后,进行调试运行。下面,对VBE编辑器界面进行介绍,并对VBA代码输入和调试的基本知识进行简单的讲解。 激活VBE编辑器 一般可以使用以下三种方式来打开VBE编辑器: ■ 使用工作表菜单“工具——宏——Visual Basic编辑器”命令,如图00-01所示;■ 在Visual Basic工具栏上,按“Visual Basic编辑器”按钮,如图00-02所示;■ 按Alt+F11组合键。

图00-01:选择菜单“工具——宏——Visual Basic编辑器”命令来打开VBE编辑器 图00-02:选择Visual Basic工具栏上的“Visual Basic编辑器”命令按钮来打开VBE编辑器 此外,您也可以使用下面三种方式打开VBE编辑器: ■ 在任一工作表标签上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问该工作表的代码模块,如图00-03所示; ■ 在工作簿窗口左上角的Excel图标上单击鼠标右键,在弹出的菜单中选择“查看代码”,则可进入VBE编辑器访问活动工作簿的ThisWorkbook代码模块,如图00-04所示; ■ 选择菜单“工具——宏——宏”命令打开宏对话框,若该工作簿中有宏程序,则单击该对话框中的“编辑”按钮即可进行VBE编辑器代码模块,如图00-05所示。

Excel VBA实例教程 #021:引用工作表的方式

VBA中,在不同的工作表之间转换或者对不同工作表中的单元格区域进行操作时,需要指定引用的工作表,通常有下面几种方法: 1、使用工作表的名称 工作表名称是指显示在工作表标签中的文本,工作表名称可以使用WorkSheets集合和Sheets集合两种引用方式,如下面的代码所示。 1.Sub ShActivate() 2. Worksheets("索引号").Activate 3. 'Sheets("索引号").Activate 4.End Sub 第3、4行代码都激活工作簿中名称为“索引号”的工作表,激活后“索引号”工作表将成为活动工作表。 WorkSheets集合包含所有的工作表,而Sheets集合不仅包含工作表集合WorkSheets,还包含图表集合Charts、宏表集合Excel4MacroSheets与MS Excel 5.0对话框集合DialogSheets等。 任何时刻工作簿中只有一个工作表是活动工作表。 2、使用工作表的索引号 工作表索引号是指工作表在工作簿中的位置,Excel根据工作表在工作表标签中的位置以1开始从左向右进行编号。下面的代码选中并激活当前工作簿中第1个工作表: 1.Sub ShIndex() 2. Worksheets(1).Select 3.End Sub 单个WorkSheet对象的Select方法与Activate方法的主要区别在于Select方法要求工作表可视。 注意当工作簿包括工作表、宏表、图表等时,使用索引号引用工作表如Sheets(1)与WorkSheets(1)引用的可能不是同一个表。 使用Worksheet对象的Index属性可以返回工作表的索引号,如下面的代码所示。 1.Sub ShInde() 2. MsgBox Worksheets("索引号").Index 3.End Sub 3、使用工作表的代码名称 使用Worksheet对象的CodeName属性可以返回工作表的代码名称,如下面的代码所示。

EXCEL宏编程简明教程(有实例),

Excel 宏编程简明教程 一)、宏学习 首先需要明确的是,本文不可能教会您关于宏的所有内容。您需要学会利用"录制宏"的方法来学习宏:点击Excel"工具"下拉菜单中"宏"下?quot;录制新宏",此后可象平时一样进行有关操作,待完成后停止录制。然后再点击"工具"下拉菜单中"宏"下"宏"的"编辑"选项即可打开刚才所录制的宏的Visual Basic源程序,并且可以在此时的"帮助"下拉菜单中获得有关的编程帮助。对录制宏进行修改不仅可以学习宏的使用,还能大大简化宏的编写。 二)、基本概念 为了学习Excel中的宏,我们需要先了解以下一些基本概念。 1、工作簿:Workbooks、Workbook、ActiveWorkbook、ThisWorkbook Workbooks集合包含Excel中所有当前打开的Excel工作簿,亦即所有打开的Excel文件;Workbook对应Workbooks中的成员,即其中的Excel文件;ActiveWorkbook代表当前处于活动状态的工作簿,即当前显示的Excel文件;ThisWorkbook代表其中有Visual Basic代码正在运行的工作簿。 在具体使用中可用Workbooks(index)来引用Workbook对象,其中index为工作簿名称或编号;如Workbooks(1)、Workbooks("年度报表.xls")。而编号按照创建或打开工作簿的顺序来确定,第一个打开的工作簿编号为1,第二个打开的工作簿为2……。 2、工作表:Worksheets、Worksheet、ActiveSheet Worksheets集合包含工作簿中所有的工作表,即一个Excel文件中的所有数据表页;而Worksheet则代表其中的一个工作表;ActiveSheet代表当前处于的活动状态工作表,即当前显示的一个工作表。 可用Worksheets(index)来引用Worksheet对象,其中index为工作表名称或索引号;如Worksheets(1)、Worksheets("第一季度数据")。工作表索引号表明该工作表在工作表标签中的位置:第一个(最左边的)工作表的索引号为1,最后一个(最右边的)为Worksheets.Count。需要注意的是:在使用过程中Excel 会自动重排工作表索引号,保持按照其在工作表标签中的从左至右排列,工作表的索引号递增。因此,由于可能进行的工作表添加或删除,工作表索引号不一定始终保持不变。 3、图表:Chart 、Charts、ChartObject、ChartObjects、ActiveChart Chart代表工作簿中的图表。该图表既可为嵌入式图表(包含在ChartObject 中),也可为一个分开的(单独的)图表工作表。 Charts代表指定工作簿或活动工作簿中所有图表工作表的集合,但不包括嵌入式在工作表或对话框编辑表中的图表。使用Charts(index) 可引用单个Chart图表,其中index是该图表工作表的索引号或名称;如Charts(1)、Charts("销售图表")。图表工作表的索引号表示图表工作表在工作簿的工作表标签栏上的位置。Charts(1)是工作簿中第一个(最左边的)图表工作表; Charts(Charts.Count)为最后一个(最右边的)图表工作表。 ChartObject代表工作表中的嵌入式图表,其作用是作为Chart对象的容器。

Excel VBA实例教程 #025:工作表的添加与删除

在工作簿中添加工作表使用Add方法,如下面的代码所示。 1.Sub Addsh() 2. Dim Sh As Worksheet 3. With Worksheets 4. Set Sh = .Add(after:=Worksheets(.Count)) 5. https://www.wendangku.net/doc/b69494582.html, = "数据" 6. End With 7.End Sub 代码解析: Addsh过程使用Add方法在工作簿中新建“数据”工作表。 第2行代码声明变量Sh为工作表对象。 第4行行代码使用Add方法在工作簿的最后新建“数据”工作表。 Add 方法应用于Sheets和Worksheets对象时新建工作表、图表或宏表,语法如下:expression.Add(Before, After, Count, Type) 参数Before是可选的,指定工作表对象,新建的工作表将置于此工作表之前。 参数After是可选的,指定工作表对象,新建的工作表将置于此工作表之后。 如果Before和After两者均省略,则新建的工作表将插入到活动工作表之前。 参数Count可选,要新建的工作表的数目。默认值为1。 参数Type可选,指定新建的工作表类型。 第5行代码将添加的工作表重命名为“数据”。 如果需要在工作簿中批量添加工作表,可以使用下面的代码。 1.Sub Addsh_2() 2. Dim i As Integer 3. Dim sh As Worksheet 4. For i = 1 To 10 5. Set sh = Sheets.Add(after:=Sheets(Sheets.Count)) 6. https://www.wendangku.net/doc/b69494582.html, = i 7. Next 8.End Sub 代码解析: Addsh_2过程使用For...Next 语句和Add方法在工作簿中添加10张工作表并将添加的工作表依次重命名。

Excel VBA实例教程指南

Excel VBA教程之一:写在前面 VBA功能如何强大,这已勿庸费言,但如何才能很快进阶,写出自己满意得程序,却取决于个人努力与悟性。我下了很大功夫却收效甚微,有时,高手一句点拨却胜读三天书。所以,我把个人学习所得作一点整理,希望有助于后学。 只所以会有瞧书没用之感,一来就是因为市面(我国)上大多数计算机类图书多为粗制滥造之作(这话稍有唐突),二来因为计算机这东西太呆板,不见得新出现得问题就能立即得到某本书籍上得解释,新问题总就是层出不穷得。7MuDj。 想把一门编程语言全部搞懂,再去写点程序,就是一个十分愚蠢得想法。您想盖房子,难道您想先学会制造砖头、玻璃等?我承认,把语言弄懂再做事情会很顺手,但就是,您知道吗,有多少人在弄懂一门晦涩难懂得语言之前就放弃了呢?比如,什么叫面向对象编程?OOP与以前得流线性编程有什么异同?我还就是大力提倡学以致用,别指望什么事您都能成专家,计算机世界得“罗氏定理”就就是:“毕其一生,不能穷其万一”,您记住了吗?GGIko。 那么,对于没有编程基础得人,怎样才能进步得快呢?我有几点思考: 1、您一定要带着明确得目得去做一件具体得事。这样,才会在做得过程中发现问题,并逐步去解决这些问题。比如,我想做一个《学生成绩分析系统》,我就会想到怎么才能把学生分数分成不同得班、怎么才能算出总分、平均分、标准差等、怎样比较各班得情况,怎样用图形显示更直观,怎么样才能把某个学生得历次成绩放在一起比较等。pVTNJ。 2、您动手去做一做,一点一点地完成您上面得设想,不必因为这个大工程没做出来而忽略您在局部得突破,这样,您会越来越有信心,这就够了,还有什么比有信心做事得感觉更好得了吗?UoyEz。 3、合理及时利用网络资源,这绝对就是个好东西,或许您瞧起来很了不起得问题,在别人瞧来简直不算什么,一定会有人为您解答。上网并不只就是QQ与game啊!同时要好好利用软件得帮助系统,这才就是最权威得解释,很多计算机书籍抄自帮助,您想,微软得专家写得,绝对原创,她还能去抄谁?NVsCr。 4、做了一些工作之后,再回过头来瞧书,就会感觉很亲切,觉得写书得人原来也不就是一无就是处,也就是很辛苦得(不要过分自我批评了)。不过,要瞧书,计算机类得,我百分之一万地推荐您瞧外国人写得,首先,软件就是人家编得,当然更了解。其次,外国人写得,又被介绍到中国来,也就是比较优秀得了。三来,我确实作过对比,瞧老外得书收益最大。语言不通得问题怎么办?金山词霸一下呗。LV7Cw。 我为什么要写这个东西?一就是因为我想帮助别人,二就是因为我想因此促进自己,三就是因为我反感某些号称程序员得家伙,似乎编程就是一件多么了不起得事,用一些极端人士得话来说:“编程有什么了不起?不就就是判断与循环吗”,说得很有道理,从本质上说,计算机就就是在做判断与循环,不信您就跟着我来吧。pBfsG。 好了,Let’s go Excel VBA教程之二:从一个界面设计开始 一个好得软件,除了运算速度快、体积小后,更重要得就是,它得用户界面就是不就是很友好、亲切,“友好、亲切”这样得词汇在开始接触计算机语言时,感觉很好笑,但现在不一样了,我感觉这两个词最贴切!界面友好,就就是引导用户能很快找到她需要得服务,最能想到她得心思,最体贴她,让她不时地心动,不时地赞叹!界面友好,就就是能让用户在不经意间学到好多知识,无形中丰富了她自己,让她有美得享受!界面友好,还在于一目了然得界面却能让她需要得功能呼之即来,挥之即去!如此等等。WQfVJ。 那么,我想做一个《学生成绩分析系统》,我该怎么做呢? 以下得界面您满意吗?

Excel VBA实例教程 #008:仅复制数值到另一区域

如果在复制单元格区域时,仅希望复制单元格区域的数值,有下面几种方法。 1、使用选择性粘贴 使用选择性粘贴功能并指定粘贴数值,如下面的代码所示。 1.Sub CopyPasteSpecial() 2. Sheet1.Range("A1").CurrentRegion.Copy 3. Sheet2.Range("A1").PasteSpecial Paste:=xlPasteValues 4. Application.CutCopyMode = False 5.End Sub 代码解析: CopyPasteSpecial过程复制工作表Sheet1中A1单元格的当前区域的数值到工作表Sheet2的A1单元格所在区域中。 第2行代码将如图1所示的Sheet1中A1单元格的当前区域进行复制。 图1 需复制的数据表 第3行代码使用选择性粘贴功能并指定粘贴数值,选择性粘贴数值仅复制了单元格区域的数值,单元格区域的格式(背景颜色、字体对齐格式和边框等)不会被复制,复制结果如图8 2所示。 图2 复制单元格区域数值 2、直接赋值的方法

除了使用Copy方法外,还可以使用直接赋值的方法,如下面的代码所示。 1.Sub GetValueResize() 2. With Sheet1.Range("A1").CurrentRegion 3. Sheet3.Range("A1").Resize(.Rows.Count, .Columns.Count).Value = .Value 4. End With 5.End Sub 代码解析: GetValueResize过程将工作表Sheet1中的A1单元格的当前区域的数值赋予工作表Sheet3的A1单元格所在的单元格区域。 在对单元格区域直接赋值时,应保证源区域大小与目标区域的大小一致,如果源区域为动态的单元格区域,可使用Resize方法确定目标区域。 运行GetValueResize过程,赋值结果如图2所示。

Excel VBA基础教程

Excel VBA基础教程 Excel VBA基础教程 Excel VBA教程是把VB编程应用在Excel平台的一套实用教程,Excel +VBA双剑合壁,他可以帮助我们实现Excel 原本实现不了的功能,可以让工作变得更高效,可以让操作变得变方便,可以把重复性的操作变得更有趣,随心所欲的定制自己的工作平台,还可以针对企业来开发各种系统如,人事管理系统、仓库系统、进存销系统等,对于经常要处理大量数据工作的朋友,学会了这套VBA教程你的工作将游刃有余。 标题 Excel VBA基础教程 Excel VBA基础教程 第一章:Excel VBA基础知识 1-1、Excel VBA教程简介 1-2、宏在工作中的运用

1-3、Excel VBA基础 1-4、Excel VBA窗口介绍 1-5、Excel VBA代码编写规则1-6、对象 1-7、属性 1-8、方法 1-9、常量与变量 1-10、数据类型 1-11、判断语句之IF 1-12、判断语句IF之多条件1-12B、If条件判断小结

1-13、判断语句之SELECT 1-14、循环语句之DO...LOOP 1-15、循环语句之DO...LOOP实例 1-16、循环语句之DO WHILE...LOOP 1-17、循环语句之DO UNTIL...LOOP 1-18、循环语句之WHILE与UNTIL位置变化1-18B、DO...LOOP 语法小结 1-19、.循环语句之FOR EACH...NEXT 1-20、循环语句之FOX...NEXT 1-20B、For...NEXT小结与实例 1-21、用语句FOR...NEXT制作九九乘法表

Excel VBA实例教程 #026:禁止删除指定工作表

在工作表事件中是没有工作表删除事件的,为了防止用户误删除重要的工作表,除了使用保护工作簿方法外,还可以使用下面的代码。 1.Public Ctl As CommandBarControl 2.Sub DelSht() 3.? ? Set Ctl = ? ? = "MyDelSht" 4.End Sub 5.Sub ResSht() 6.? ? Set Ctl = ? ? = "" 7.End Sub 8.Sub MyDelSht() 9.? ? If $ = "SHEET2" Then 10.? ?? ???MsgBox "禁止删除" & & "工作表!" 11.? ? Else 12.? ?? ??? 13.? ? End If 14.End Sub 代码解析: DelSht过程将工作表标签右键菜单中的“删除工作表”菜单的OnAction属性设置为“MyDelSht”。 第3行代码使用Set语句将工作表标签右键菜单中的“删除工作表”菜单赋给变量Ctl,并将其OnAction属性设置为MyDelSht过程,该菜单被单击时将运行“MyDelSht”过程而不是系统默认的设置。OnAction属性返回或设置一个VBA的过程名,该过程在用户单击或更改某命令栏控件的值时运行。 ResSht过程将工作表标签右键菜单中的“删除工作表”菜单的OnAction属性恢复为默认设置。 MyDelSht过程判断所要删除的工作表的代码名称是否是“SHEET2”,如果是则禁止删除该表而只显示一个提示消息框。 为了不影响其他工作簿的使用,在VBE中双击ThisWorkbook写入下面的代码。 1.Private Sub Workbook_Activate() 2.? ? Call DelSht 3.End Sub 4.Private Sub Workbook_Deactivate()

excelvba实例教程#054:导出工作表中的图片

有时需要将工作表中的图形对象保存为单独的图像文件,可以使用Export方法将工作表中的图片以文件形式导出,如下面的代码所示。 1.Sub ExportShp() 2. Dim Shp As Shape 3. Dim FileName As String 4. For Each Shp In 5.If = msoPicture Then 6.FileName = & "\" & & ".gif" 7. 8.With 0, + 28, + 30).Chart 9. .Paste 10. .Export FileName, "gif" 11. . 12.End With 13.End If 14. Next 15.End Sub 代码解析: ExportShp过程将Sheet1工作表的所有图片以文件形式导出到同一目录中。 第4行代码使用For Each...Next 语句遍历Sheet1工作表中的所有图形。 第5行代码判断图形的类型是否为图片,应用于Shape对象的Type属性返回或设置图形类型,可以为表格 1所示的

表格 1 MsoShapeType常量 第6行代码使用字符串变量FileName记录需导出图形的路径和名称。 第7行代码复制图形,应用于Shape对象的Copy方法将对象复制到剪贴板。 第8行代码使用Add方法在工作表中添加一个图表,应用于ChartObjects对象的Add 方法创建新的嵌入图表,语法如下:(Left, Top, Width, Height) 参数expression是必需的,返回一个ChartObjects对象。

参数Left、参数Top是必需的,以磅为单位给出新对象的初始坐标,该坐标是相对于工作表上单元格A1的左上角或图表的左上角的坐标。 参数Width、参数Height是必需的,以磅为单位给出新对象的初始大小。 第9行代码使用Paste方法将图形粘贴到新的嵌入图表中,应用于Chart对象的Paste方法将剪贴板中的图表数据粘贴到指定的图表中,语法如下: (Type) 参数expression是必需的,返回一个Chart对象。 参数Type是可选的的,如果剪贴板中有图表,本参数指定要粘贴的图表信息。可为以下XlPasteType常量之一:xlFormats、xlFormulas或xlAll。默认值为xlAll,如果剪贴板中是数据不是图表,则不能使用本参数。 第10行代码使用Export方法将图表导出到同一目录中,应用于Chart对象的Export方法以图形格式导出图表,语法如下:(Filename, FilterName, Interactive) 其中参数Filename是必需的,被导出的文件的名称。 第10行代码删除新建的图表。因为Chart对象是不能使用Delete方法直接删除的,应先使用Parent属性返回指定对象的父对象,然后使用Delete方法删除。

相关文档
相关文档 最新文档