如何能有效地学习 VBA

查看: 6825|回复: 13
如何系统学习VBA?
阅读权限20
在线时间 小时
各位前辈,我不是工科主修,之前没有编程背景。如今自学已经会用基本的VBA 编程,会用循环语句和msgbox,用VBA 引用excel函数,做基本的simulation什么的等等。
但是因为是自学,感觉学的不是很系统,自我感觉有三大问题,请前辈指点:
1.有些语句,如exit, property 还有private/ public sub的区别等概念,debug的具体做法搞不清楚(也可能是我不知道一些英语的词会翻译成中文是什么,自己看的书是英文版的),
2.有些细节不明白,比如之前不知道
if a&b&&then c
if a&b then
是相同的,前两天经论坛上前辈指教才了解。
3. 有些sub不会写,比如怎么不打开文件读取数据,Aplication. DisplayAlerts= off.这类的语句不明白。
4 编程前没有一个系统的logic,或者是flow,这个可能是我找不到相关练习题,练习不够多造成的。不会将那些语句综合起来用(特别是sub,因为当时是为了做simulation,所以编了很多function,忽略了sub这边)。
我现在的做法是发现有什么不会的就上网查查, 但是总感觉很混乱,因为这些东西很多,特别是第三类,所以最近有些着急,又找不到什么实际的exercise可以练习一下。
不知道看了我的问题,各位前辈有什么经验或意见可以指点一下。希望我表达清楚了,先谢谢了。
阅读权限95
在线时间 小时
找一两本书看看,会系统一些
又找不到什么实际的exercise可以练习一下。
----------------------------------------------------------
这个简单,论坛有很多问题,你选一些来回答就是。。。
阅读权限20
在线时间 小时
回复 2楼 jiminyanyan 的帖子
但是书上一般都不会有application.displayalerts, 或 savecopyas这种用法或语句啊
阅读权限20
在线时间 小时
& & & & & & & &
原帖由 jiminyanyan 于
13:32 发表
找一两本书看看,会系统一些
又找不到什么实际的exercise可以练习一下。
----------------------------------------------------------
这个简单,论坛有很多问题,你选一些来回答就是。。。
其实第三点也是最困扰我的,因为概念什么的不会可以上网查,但是有一些语句不了解,比如On error goto..(前两天第一次见才弄明白)导致论坛上很多帖子看不明白(论坛上的题目没有按照难度分类),你的建议是我是case by case分析总结是吗?有没有什么总结贴或是书可以把这些东西一网打尽的?谢谢
阅读权限30
在线时间 小时
& & & & & & & &
捕鱼要一天一天的捕。不会一天就把鱼捕干净的。。同一块水域天天可以捕到鱼。。。我也想啊。。
阅读权限95
在线时间 小时
原帖由 mashimaro0425 于
13:44 发表
其实第三点也是最困扰我的,因为概念什么的不会可以上网查,但是有一些语句不了解,比如On error goto..(前两天第一次见才弄明白)导致论坛上很多帖子看不明白(论坛上的题目没有按照难度分类),你的建议是我是 ...
不明白也硬着头皮看,看多了就会明白的。再说不懂也可以发帖子问卡。。。
阅读权限20
在线时间 小时
回复 2楼 jiminyanyan 的帖子
不好意思,上边那个帖子没有点到回复,对不起
阅读权限20
在线时间 小时
回复 5楼 timeyh 的帖子
恩,说得是,我都点太急功近利了。
阅读权限30
在线时间 小时
学以致用,不然有些空洞,我一般是工作遇到问题了再解决
阅读权限20
在线时间 小时
楼上说的对,应用于实际工作是最好学习的
excel非常强大,没人敢说100%都会
玩命加载中,请稍候
玩命加载中,请稍候
Powered by
本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任! & & 本站特聘法律顾问:徐怀玉律师 李志群律师我是一名不务正业的财务工作人员,自从跨国公司开始流行share service center后,我作为一名财务已经不处理任何账务上的工作了,现在算是半个数据分析员,在月初会制作报表,分析销售和库存数据,每次从SAP里导出的数据大概在几万行左右,每月初都要花费不少时间用于制作报表,制作流程枯燥繁琐,所以希望能通过VBA编程的方式自动制作报表,节约时间提高效率,平时工作中能熟练运用if iferror sumifs vlookup等函数,会录制宏,但是VBA经验为0,没有任何编程经验,有一定的英语基础,希望能迅速掌握VBA语言,并投入到实际的工作运用中去,谢谢-----------------------------------------------------------------------------------------------------------刚才bing了一下(万恶的长城,还我google!!!!!),貌似有人说懂python也可以编写VBA???????
我也搞数据分析的,经常用VBA与MS ACCESS 制作一些报表,对这方面很有经验,加我私信交流
&p&我就不请自来了。&/p&&br&&p&&b&为什么要学VBA?&/b&&/p&&br&&p&用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。毕竟就题主的描述看题主并不是计算机专业人员,只不过是为了提升自己的效率而已,说白了只是为了实用的目的学的。&/p&&br&&p&&b&学VBA学什么?&/b&&/p&&br&&p&那么VBA应该怎么学呢?当然VBA可以有很高级的用法,但是以题主的目的来看,其实VBA对题主有两部分的内容:&b&Visual Basic的语法和Excel的对象模型体系&/b&。如果这两部分都搞懂了,实践中遇到问题,上网搜搜就可以了,推荐Excel Home。&/p&&br&&p&&b&零基础怎么办?&/b&&/p&&br&&p&但是,题主是0基础,这个怎么办呢?嗯,录制宏是个好玩意儿。当你不知道某个要实现的功能该怎么写的时候,先把手动做的过程录下来,再把录制的代码修改修改就可以了。怎么录制宏?以Excel 2010为例“文件-&选项-&自定义功能区”,然后把开发工具勾上。接着点“录制宏”,之后你想做什么就做什么就好了,做完结束录制,你需要的代码就都录制好了。&/p&&img src=&/7d43a9d2f9fcd567fc8b_b.jpg& data-rawheight=&230& data-rawwidth=&266& class=&content_image& width=&266&&&br&&p&嗯嗯,这个做法不错。那么摆在题主面前的最后一倒大关是什么呢——编程的基本概念。那么编程的基本概念是什么呢?那理论多了,大神们可以说个没完没了。不过,题主可以宽心,学个VBA,你需要了解的其实只是&b&一个中心——“变量”,两个基本点——“过程和函数”和三个代表——“顺序、判断、循环”&/b&。只要你建立了这些概念,就可以开始边练边学了。这几个概念建立需要多长时间?读完我的回答就可以了。&/p&&br&&p&好的,我开始BALABALA了。&/p&&br&&p&&b&一个中心——“变量”:&/b&&/p&&br&&p&VBA和C语言一样都是命令式的语言,&b&变量&/b&是你执行计算的中心,也就是我们编程的过程,多数时候是在对变量进行加工。这个概念就好比数学里面的函数,有个原变量,函数加工之后就得到了因变量。比如我要求平方:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Dim&/span& &span class=&n&&X&/span& &span class=&ow&&as&/span& &span class=&kt&&Integer&/span&
&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&mi&&5&/span&
&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&n&&X&/span& &span class=&o&&*&/span& &span class=&n&&X&/span&
&/code&&/pre&&/div&&p&上面的代码里面X就是个变量,X = 5是给X一个初值,X = X * X就是对X进行的加工,也就是求平方。&/p&&br&&p&&b&两个基本点——“过程与函数”&/b&&/p&&br&&p&VBA区分过程与函数,实际上这两个货基本一样。函数是什么?这里的函数,其实和数学的函数很像,把变量丢进来(&b&参数&/b&),产出就函数的&b&返回值。&/b&还是举平方的例子:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Function&/span& &span class=&nf&&Square&/span&&span class=&p&&(&/span&&span class=&n&&Num&/span& &span class=&ow&&As&/span& &span class=&kt&&Integer&/span&&span class=&p&&)&/span&
&span class=&n&&Square&/span& &span class=&o&&=&/span& &span class=&n&&Num&/span& &span class=&o&&*&/span& &span class=&n&&Num&/span&
&span class=&k&&End&/span& &span class=&k&&Function&/span&
&span class=&k&&Sub&/span& &span class=&nf&&Fun1&/span&&span class=&p&&()&/span&
&span class=&n&&Debug&/span&&span class=&p&&.&/span&&span class=&n&&Print&/span& &span class=&n&&Square&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span&
&span class=&k&&End&/span& &span class=&k&&Sub&/span&
&/code&&/pre&&/div&&p&很简单吧?函数就是Square,和函数同名的变量就是你要返回的值。把变量Square的值设置为你要返回的值就可以了。过程呢,也就是Sub,其实就是不返回值得函数。上面的过程Fun1里面调用了我们写的函数Square,传入了一个&b&参数&/b&5。&br&&/p&&br&&p&&b&三个代表——“顺序、循环、判断”&/b&&/p&&br&&p&既然题主对公式里面的IF什么的比较熟悉了,那么下面的内容应该不难理解。&/p&&br&&p&“顺序”是最基础的语句执行模式,说白了就一句接着一句的执行。上面代码就是顺序执行的一个例子。先赋初值给X,然后再求平方。&/p&&br&&p&“判断”呢,就是说,根据某个判断结果,来选择执行那些语句:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&If&/span& &span class=&n&&X&/span& &span class=&o&&&&/span& &span class=&mi&&5&/span& &span class=&k&&Then&/span&
&span class=&c&&' Do something &/span&
&span class=&k&&Else&/span& &span class=&c&&' else is optional&/span&
&span class=&c&&' Do elsething &/span&
&span class=&k&&End&/span& &span class=&k&&If&/span&
&/code&&/pre&&/div&&p&“循环”呢,就是重复做某件事情,这大约是最能解放你双手的以中语句了。比如我要求1~100的和,那么我可以X=X+1 X=X+2 …… X=X+100,呃,是不是快累死了?没关系,循环解救你:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Dim&/span& &span class=&n&&Sum&/span& &span class=&ow&&as&/span& &span class=&kt&&Integer&/span&
&span class=&n&&Sum&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&For&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span& &span class=&k&&to&/span& &span class=&mi&&100&/span& &span class=&k&&Step&/span& &span class=&mi&&1&/span&
&span class=&n&&Sum&/span& &span class=&o&&=&/span& &span class=&n&&Sum&/span& &span class=&o&&+&/span& &span class=&n&&I&/span&
&span class=&k&&Next&/span&
&span class=&n&&Debug&/span&&span class=&p&&.&/span&&span class=&n&&Print&/span& &span class=&n&&Sum&/span&
&/code&&/pre&&/div&&p&上面的代码应该挺直白,说白了就是设置一个变量Sum,设初值为0,然后从(For)1加到(to)100,然后Debug.Print Sum把最后结果打印出来。如果实在不懂也不必太纠结,具体的语法,你查查语法手册就了解了,用着用着自然也就熟悉了。&/p&&br&&p&&b&接着,该学点儿什么?&/b&&/p&&br&&p&好了,基本思想就是这么地了,没什么神奇的。那接着怎么办?接下去,就要了解怎么用VBA操作Excel了,这一部分是VBA(Visual Basic for Application)中for Application的部分。于是Excel的VBA对象模型就登场了。其实也就是Application代表Excel程序,Workbooks代表所有打开的Excel文件的,Sheets代表Excel文件里面的表单,Range代表一个单元格区域什么的。比如&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&n&&Range&/span&&span class=&p&&(&/span&&span class=&s&&&A1&&/span&&span class=&p&&).&/span&&span class=&n&&Value&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&
&/code&&/pre&&/div&&p&就是将当前表单的A1单元格的值设置为1。打开VBA的录制宏,试一试你就了解了,很简单的。&/p&&br&&p&如果还是迷糊的话,先看本书吧,把概念捋顺一下。大厚本的不要,《别怕,Excel VBA其实很简单》还不错(不是广告……)。&/p&
我就不请自来了。 为什么要学VBA? 用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。毕竟就题主的描述看题主并不是计算机专业人员,只不过是为了提升自己的效率而已…
我想从需求角度说一下我为什么学VBA吧。&br&说一下我的专业背景:我本科是地理学方向的,大一公共课学的是C语言,学的一塌糊涂,期末考试挂了科。&br&&br&其实我并不是从一开始就不喜欢编程的,初中的时候学校周末组织学过FORTRAN,并考过了国家一级;高一的时候又开始学C,然后就彻底懵了,实在是学不了C,我也不知道为什么,就是对C很厌烦,或许因为C是一种非常严谨的语言,只要一点错误就bug……本来在高中时候就要考全国二级C,可是,考了两次都挂了,我只好放弃。&br&不幸的是,来到江苏上大学,计算机公共课竟然还是C,因为之前的心理阴影,我不想学,也静不下心学,理所当然的挂了科。大二开学后补考,最后实在是我们的C语言老师可怜我,勉强给了我61分……&br&&br&接下来的几年一直没有接触编程。09年读研究生,开始逐渐接触大量数据的整理和分析。刚开始的时候Excel能够满足我的需求,我的需求就是用excel快速、高效率的进行前期的数据处理。但到后来,excel的现有功能已经无法满足我的要求——大多数的情况用excel当然还是能做,但却麻烦,均是巨量的重复性工作;还有少数纯粹是用excel已有功能无法做的。&br&&br&然后就想办法,怎么处理这些数据?那段时间因为无法继续开展工作,差点把自己逼疯了!巨大的压力让我硬着头皮去寻找方法,最后开始接触VBA。&br&&br&于是,我带着问题和目标去学习VBA,因为我身边的人都是些连Excel都用不明白的人,所以我只能靠自己学,有不明白的就google或百度。我从ALT+F11开始,敲下第一个sub,写下第一个function,再到最后完美的解决了我的难题,那种幸福感真的是难以描述……&br&&br&研二的时候因写一篇文章,有两个分析方法也是用VBA解决的。一个是称之为二维数据离散度,可以反映散点图中散点的集中程度,一个是斑块的Effective Mesh Size of Cross-Boundary connection。前者是在Excel中用vba算的,后者则是在ArcGIS中用VBA算的,算是Arcgis二次开发的第一次尝试。也是在这之后,开始尝试接触python,因为arcgis是自带python的……&br&&br&从第一次用vba解决问题,到现今我已经用vba解决了上百个问题,写了几百个函数,代码估计用上万行,这些开启了宏的excel一直保存在我的电脑里,我很珍惜!&br&&br&讲一个很囧的事,大家姑且当作个笑话吧:前段时间,我因为觉得cl上的很多图片挺好的,但又觉得一张张的右键保存太费事,用百度云收藏吧,又没有很好的文件管理功能,所有的图片都在同一个文件夹下,于是就很闷骚的用vba写了一个工具,只要输入帖子的网址和保存路径,即可以批量的下载图片,下载下来的图片放到以帖子名称为文件夹名的文件夹中,哈哈,说的好绕口……&br&&br&不细说了,我就谈谈在写这个工具的时候,我又学到了什么?&br&1、如何获取网页的源代码,掌握了XMLHTTP对象的属性和方法;&br&2、运用URLDownloadToFile下载文件,例如图片,压缩包等等;&br&3、二进制文件的读取写入,特别是如何通过图片格式文件的二进制流:(1)判断图片类型,是.jpg还是.png还是.gif,(2)确定图片的分辨率(Height Width);&br&4、给定目录下所有文件夹、文件名称的读取;&br&&br&所以,当带着目标解决问题的时候,最后你不仅仅解决了问题,而且通常会学到超乎你预计的知识。&br&&br&现在我不仅熟练的运用VBA处理大量数据,而且硕士研究生的时候自学了python和R语言,去年又迷上了ruby。我也没想通,为什么我对C语言那么痛恨,却能够学进去这些编程语言,而且还能学的不错,至少我能解决我的问题!&br&&br&最后我想说的是:要学编程,不管是局限性比较大的VBA,还是让我恨得要死的C,还是流行的Python、Ruby,尽量不要去照着教材一般的各种书籍去一步步做!个人感觉这是学编程最笨、最没效果的行为!你要给自己找一个或几个目标,目标或有趣,或有意义,或兼而有之,总之是带着问题去学习,在解决问题的过程中,碰到了困惑就去网上查找——请相信我,网友们的遇到的问题肯定比你遇到的多,最重要的是,网友们的智慧要比写教材或者攻略的那些所谓的“专家”“教授”们都要高!&br&&br&编程犹如武功,一法通万法通。
我想从需求角度说一下我为什么学VBA吧。 说一下我的专业背景:我本科是地理学方向的,大一公共课学的是C语言,学的一塌糊涂,期末考试挂了科。 其实我并不是从一开始就不喜欢编程的,初中的时候学校周末组织学过FORTRAN,并考过了国家一级;高一的时候又开…
已有帐号?
无法登录?
社交帐号登录
POWER IS MONEY如何学习VBA_百度知道分享给朋友:把视频贴到Blog或BBS&&通用代码: <input id="link4" type="text" class="form_input form_input_s" value="" />复 制flash地址: 复 制html代码: <input type="text" class="form_input form_input_s" id="link3" value="" />复 制分享视频到站外获取收益&&手机扫码分享视频二维码2小时内有效如何学习VBA下载至电脑扫码用手机看用或微信扫码在手机上继续观看二维码2小时内有效如何学习VBA扫码用手机继续看用或微信扫码在手机上继续观看二维码2小时内有效,扫码后可分享给好友没有优酷APP?立即下载请根据您的设备选择下载版本选集
药品服务许可证(京)-经营-
节目制作经营许可证京字670号
请使用者仔细阅读优酷、、
Copyright(C)2016 优酷
不良信息举报电话:我是一名不务正业的财务工作人员,自从跨国公司开始流行share service center后,我作为一名财务已经不处理任何账务上的工作了,现在算是半个数据分析员,在月初会制作报表,分析销售和库存数据,每次从SAP里导出的数据大概在几万行左右,每月初都要花费不少时间用于制作报表,制作流程枯燥繁琐,所以希望能通过VBA编程的方式自动制作报表,节约时间提高效率,平时工作中能熟练运用if iferror sumifs vlookup等函数,会录制宏,但是VBA经验为0,没有任何编程经验,有一定的英语基础,希望能迅速掌握VBA语言,并投入到实际的工作运用中去,谢谢-----------------------------------------------------------------------------------------------------------刚才bing了一下(万恶的长城,还我google!!!!!),貌似有人说懂python也可以编写VBA???????
如果你的公司有一个很渣的ERP,那么你会在3个月内精通VBA,实践!
&p&我就不请自来了。&/p&&br&&p&&b&为什么要学VBA?&/b&&/p&&br&&p&用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。毕竟就题主的描述看题主并不是计算机专业人员,只不过是为了提升自己的效率而已,说白了只是为了实用的目的学的。&/p&&br&&p&&b&学VBA学什么?&/b&&/p&&br&&p&那么VBA应该怎么学呢?当然VBA可以有很高级的用法,但是以题主的目的来看,其实VBA对题主有两部分的内容:&b&Visual Basic的语法和Excel的对象模型体系&/b&。如果这两部分都搞懂了,实践中遇到问题,上网搜搜就可以了,推荐Excel Home。&/p&&br&&p&&b&零基础怎么办?&/b&&/p&&br&&p&但是,题主是0基础,这个怎么办呢?嗯,录制宏是个好玩意儿。当你不知道某个要实现的功能该怎么写的时候,先把手动做的过程录下来,再把录制的代码修改修改就可以了。怎么录制宏?以Excel 2010为例“文件-&选项-&自定义功能区”,然后把开发工具勾上。接着点“录制宏”,之后你想做什么就做什么就好了,做完结束录制,你需要的代码就都录制好了。&/p&&img src=&/7d43a9d2f9fcd567fc8b_b.jpg& data-rawheight=&230& data-rawwidth=&266& class=&content_image& width=&266&&&br&&p&嗯嗯,这个做法不错。那么摆在题主面前的最后一倒大关是什么呢——编程的基本概念。那么编程的基本概念是什么呢?那理论多了,大神们可以说个没完没了。不过,题主可以宽心,学个VBA,你需要了解的其实只是&b&一个中心——“变量”,两个基本点——“过程和函数”和三个代表——“顺序、判断、循环”&/b&。只要你建立了这些概念,就可以开始边练边学了。这几个概念建立需要多长时间?读完我的回答就可以了。&/p&&br&&p&好的,我开始BALABALA了。&/p&&br&&p&&b&一个中心——“变量”:&/b&&/p&&br&&p&VBA和C语言一样都是命令式的语言,&b&变量&/b&是你执行计算的中心,也就是我们编程的过程,多数时候是在对变量进行加工。这个概念就好比数学里面的函数,有个原变量,函数加工之后就得到了因变量。比如我要求平方:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Dim&/span& &span class=&n&&X&/span& &span class=&ow&&as&/span& &span class=&kt&&Integer&/span&
&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&mi&&5&/span&
&span class=&n&&X&/span& &span class=&o&&=&/span& &span class=&n&&X&/span& &span class=&o&&*&/span& &span class=&n&&X&/span&
&/code&&/pre&&/div&&p&上面的代码里面X就是个变量,X = 5是给X一个初值,X = X * X就是对X进行的加工,也就是求平方。&/p&&br&&p&&b&两个基本点——“过程与函数”&/b&&/p&&br&&p&VBA区分过程与函数,实际上这两个货基本一样。函数是什么?这里的函数,其实和数学的函数很像,把变量丢进来(&b&参数&/b&),产出就函数的&b&返回值。&/b&还是举平方的例子:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Function&/span& &span class=&nf&&Square&/span&&span class=&p&&(&/span&&span class=&n&&Num&/span& &span class=&ow&&As&/span& &span class=&kt&&Integer&/span&&span class=&p&&)&/span&
&span class=&n&&Square&/span& &span class=&o&&=&/span& &span class=&n&&Num&/span& &span class=&o&&*&/span& &span class=&n&&Num&/span&
&span class=&k&&End&/span& &span class=&k&&Function&/span&
&span class=&k&&Sub&/span& &span class=&nf&&Fun1&/span&&span class=&p&&()&/span&
&span class=&n&&Debug&/span&&span class=&p&&.&/span&&span class=&n&&Print&/span& &span class=&n&&Square&/span&&span class=&p&&(&/span&&span class=&mi&&5&/span&&span class=&p&&)&/span&
&span class=&k&&End&/span& &span class=&k&&Sub&/span&
&/code&&/pre&&/div&&p&很简单吧?函数就是Square,和函数同名的变量就是你要返回的值。把变量Square的值设置为你要返回的值就可以了。过程呢,也就是Sub,其实就是不返回值得函数。上面的过程Fun1里面调用了我们写的函数Square,传入了一个&b&参数&/b&5。&br&&/p&&br&&p&&b&三个代表——“顺序、循环、判断”&/b&&/p&&br&&p&既然题主对公式里面的IF什么的比较熟悉了,那么下面的内容应该不难理解。&/p&&br&&p&“顺序”是最基础的语句执行模式,说白了就一句接着一句的执行。上面代码就是顺序执行的一个例子。先赋初值给X,然后再求平方。&/p&&br&&p&“判断”呢,就是说,根据某个判断结果,来选择执行那些语句:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&If&/span& &span class=&n&&X&/span& &span class=&o&&&&/span& &span class=&mi&&5&/span& &span class=&k&&Then&/span&
&span class=&c&&' Do something &/span&
&span class=&k&&Else&/span& &span class=&c&&' else is optional&/span&
&span class=&c&&' Do elsething &/span&
&span class=&k&&End&/span& &span class=&k&&If&/span&
&/code&&/pre&&/div&&p&“循环”呢,就是重复做某件事情,这大约是最能解放你双手的以中语句了。比如我要求1~100的和,那么我可以X=X+1 X=X+2 …… X=X+100,呃,是不是快累死了?没关系,循环解救你:&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&k&&Dim&/span& &span class=&n&&Sum&/span& &span class=&ow&&as&/span& &span class=&kt&&Integer&/span&
&span class=&n&&Sum&/span& &span class=&o&&=&/span& &span class=&mi&&0&/span&
&span class=&k&&For&/span& &span class=&n&&i&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span& &span class=&k&&to&/span& &span class=&mi&&100&/span& &span class=&k&&Step&/span& &span class=&mi&&1&/span&
&span class=&n&&Sum&/span& &span class=&o&&=&/span& &span class=&n&&Sum&/span& &span class=&o&&+&/span& &span class=&n&&I&/span&
&span class=&k&&Next&/span&
&span class=&n&&Debug&/span&&span class=&p&&.&/span&&span class=&n&&Print&/span& &span class=&n&&Sum&/span&
&/code&&/pre&&/div&&p&上面的代码应该挺直白,说白了就是设置一个变量Sum,设初值为0,然后从(For)1加到(to)100,然后Debug.Print Sum把最后结果打印出来。如果实在不懂也不必太纠结,具体的语法,你查查语法手册就了解了,用着用着自然也就熟悉了。&/p&&br&&p&&b&接着,该学点儿什么?&/b&&/p&&br&&p&好了,基本思想就是这么地了,没什么神奇的。那接着怎么办?接下去,就要了解怎么用VBA操作Excel了,这一部分是VBA(Visual Basic for Application)中for Application的部分。于是Excel的VBA对象模型就登场了。其实也就是Application代表Excel程序,Workbooks代表所有打开的Excel文件的,Sheets代表Excel文件里面的表单,Range代表一个单元格区域什么的。比如&/p&&div class=&highlight&&&pre&&code class=&language-vb.net&&&span class=&n&&Range&/span&&span class=&p&&(&/span&&span class=&s&&&A1&&/span&&span class=&p&&).&/span&&span class=&n&&Value&/span& &span class=&o&&=&/span& &span class=&mi&&1&/span&
&/code&&/pre&&/div&&p&就是将当前表单的A1单元格的值设置为1。打开VBA的录制宏,试一试你就了解了,很简单的。&/p&&br&&p&如果还是迷糊的话,先看本书吧,把概念捋顺一下。大厚本的不要,《别怕,Excel VBA其实很简单》还不错(不是广告……)。&/p&
我就不请自来了。 为什么要学VBA? 用好VBA的话确实可以给你再办公室的工作效率带来质的提升。如果有人跟你说你可以用Python什么的语言处理Excel balabala的,你可以无视他了。毕竟就题主的描述看题主并不是计算机专业人员,只不过是为了提升自己的效率而已…
我想从需求角度说一下我为什么学VBA吧。&br&说一下我的专业背景:我本科是地理学方向的,大一公共课学的是C语言,学的一塌糊涂,期末考试挂了科。&br&&br&其实我并不是从一开始就不喜欢编程的,初中的时候学校周末组织学过FORTRAN,并考过了国家一级;高一的时候又开始学C,然后就彻底懵了,实在是学不了C,我也不知道为什么,就是对C很厌烦,或许因为C是一种非常严谨的语言,只要一点错误就bug……本来在高中时候就要考全国二级C,可是,考了两次都挂了,我只好放弃。&br&不幸的是,来到江苏上大学,计算机公共课竟然还是C,因为之前的心理阴影,我不想学,也静不下心学,理所当然的挂了科。大二开学后补考,最后实在是我们的C语言老师可怜我,勉强给了我61分……&br&&br&接下来的几年一直没有接触编程。09年读研究生,开始逐渐接触大量数据的整理和分析。刚开始的时候Excel能够满足我的需求,我的需求就是用excel快速、高效率的进行前期的数据处理。但到后来,excel的现有功能已经无法满足我的要求——大多数的情况用excel当然还是能做,但却麻烦,均是巨量的重复性工作;还有少数纯粹是用excel已有功能无法做的。&br&&br&然后就想办法,怎么处理这些数据?那段时间因为无法继续开展工作,差点把自己逼疯了!巨大的压力让我硬着头皮去寻找方法,最后开始接触VBA。&br&&br&于是,我带着问题和目标去学习VBA,因为我身边的人都是些连Excel都用不明白的人,所以我只能靠自己学,有不明白的就google或百度。我从ALT+F11开始,敲下第一个sub,写下第一个function,再到最后完美的解决了我的难题,那种幸福感真的是难以描述……&br&&br&研二的时候因写一篇文章,有两个分析方法也是用VBA解决的。一个是称之为二维数据离散度,可以反映散点图中散点的集中程度,一个是斑块的Effective Mesh Size of Cross-Boundary connection。前者是在Excel中用vba算的,后者则是在ArcGIS中用VBA算的,算是Arcgis二次开发的第一次尝试。也是在这之后,开始尝试接触python,因为arcgis是自带python的……&br&&br&从第一次用vba解决问题,到现今我已经用vba解决了上百个问题,写了几百个函数,代码估计用上万行,这些开启了宏的excel一直保存在我的电脑里,我很珍惜!&br&&br&讲一个很囧的事,大家姑且当作个笑话吧:前段时间,我因为觉得cl上的很多图片挺好的,但又觉得一张张的右键保存太费事,用百度云收藏吧,又没有很好的文件管理功能,所有的图片都在同一个文件夹下,于是就很闷骚的用vba写了一个工具,只要输入帖子的网址和保存路径,即可以批量的下载图片,下载下来的图片放到以帖子名称为文件夹名的文件夹中,哈哈,说的好绕口……&br&&br&不细说了,我就谈谈在写这个工具的时候,我又学到了什么?&br&1、如何获取网页的源代码,掌握了XMLHTTP对象的属性和方法;&br&2、运用URLDownloadToFile下载文件,例如图片,压缩包等等;&br&3、二进制文件的读取写入,特别是如何通过图片格式文件的二进制流:(1)判断图片类型,是.jpg还是.png还是.gif,(2)确定图片的分辨率(Height Width);&br&4、给定目录下所有文件夹、文件名称的读取;&br&&br&所以,当带着目标解决问题的时候,最后你不仅仅解决了问题,而且通常会学到超乎你预计的知识。&br&&br&现在我不仅熟练的运用VBA处理大量数据,而且硕士研究生的时候自学了python和R语言,去年又迷上了ruby。我也没想通,为什么我对C语言那么痛恨,却能够学进去这些编程语言,而且还能学的不错,至少我能解决我的问题!&br&&br&最后我想说的是:要学编程,不管是局限性比较大的VBA,还是让我恨得要死的C,还是流行的Python、Ruby,尽量不要去照着教材一般的各种书籍去一步步做!个人感觉这是学编程最笨、最没效果的行为!你要给自己找一个或几个目标,目标或有趣,或有意义,或兼而有之,总之是带着问题去学习,在解决问题的过程中,碰到了困惑就去网上查找——请相信我,网友们的遇到的问题肯定比你遇到的多,最重要的是,网友们的智慧要比写教材或者攻略的那些所谓的“专家”“教授”们都要高!&br&&br&编程犹如武功,一法通万法通。
我想从需求角度说一下我为什么学VBA吧。 说一下我的专业背景:我本科是地理学方向的,大一公共课学的是C语言,学的一塌糊涂,期末考试挂了科。 其实我并不是从一开始就不喜欢编程的,初中的时候学校周末组织学过FORTRAN,并考过了国家一级;高一的时候又开…
已有帐号?
无法登录?
社交帐号登录

我要回帖

 

随机推荐