ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 4243|回复: 25

[原创] 通过例子入门excel-vba

[复制链接]

TA的精华主题

TA的得分主题

发表于 2010-7-14 22:51 | 显示全部楼层 |阅读模式
看到大师们总结的东西好多,参加了eh的vba入门已经两个多月了,深知总结的作用,不仅是对自己知识的梳理,而且也是对自己的鞭策,如能坚持下来,收获一定不少,在此发帖,希望能记录自己学习的点点滴滴
并希望师弟thmmy能和我一起坚持
从最简单的开始,只是本人对自己学得的理解,肯定不能和大师们比,希望大家多多鼓励支持,并嘴下留情

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-15 00:18 | 显示全部楼层
vba的操作用的最多的就是对单元格的操作,比如对单元格的复制,粘贴,删除,赋值等等
所以首先要讲的是单元格的表示方法。单元格属于一个对象,对对象进行某些操作,就是vba要做的事情。
讲单元格之前,先要知道几个要记住的知识点,再结合单元格表示,就能写出简单的代码了
1,过程:以sub开始  endsub结束,过程是固定式的,只要死记住就行了,当以后对过程有更深的理解之后再重新学习理解,刚见面只要有所感觉就行了。
sub  取数()
语句
endsub
取数是过程的名字,过程的名字可以自己取,最好是一下子就能看出来该过程是干什么用的,如果一个过程叫做排序,另一个过程叫做aa,aa的作用也是排序,那么其他人就容易看明白过程。最容易理解的是有意义的命名方法。(之后讲的变量也是用此原则,简明识意),当然只是习惯问题,如果非要取无意义的名字也无妨。
2,select语句。就是选中xx的意思。比如   黎明.select   就是选择黎明的意思,这是vba的语法,知道他的功能就行。

单元格的表示:
vba代码里面的单元格表示方法有多种
1,中括号表示,[a1]表示单元格a1
2,range("a1")表示单元格a1,其中双引号表示的是文本
3,cells(1,1)表示第1行第1列,第一个参数是行号,第二个参数是列号;,或者cells(1,"a")表示第1行,第a列

好了,可以开始实例了
写一个过程,运行之后选中a1:a10单元格
尽量多用几种办法,下列是第一种

sub    test()
[a1:a10].select
endsub

TA的精华主题

TA的得分主题

发表于 2010-7-15 01:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
cells(1,"a")
以后不用数格子了,

TA的精华主题

TA的得分主题

发表于 2010-7-15 21:07 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-15 23:55 | 显示全部楼层

例子的几个方法

非常谢谢楼上两位的支持,有回帖给我莫大的鼓舞啊!白天忙晚上也小忙,所以更新的时间稍微少了一点点.... 接2楼的例子,在初学的时候,要多思考实现的方法,因为以后很多例子虽然可以用更简单的方法来做,但是如果不懂得一些属性或者某些代码,怎么实现呢?所以多思考其他方法解决问题会很有好处!
先给出2楼的代码其他方法,并给出一些注意的地方
Sub 方法1()
[a1:a10].Select
End Sub
方法1:简单,但是不灵活,为什么这么说呢?以后讲到变量的时候再说
Sub 方法2()
Range("a1:a10").Select
End Sub
方法2:这个可以直接通过录制宏取得,比较灵活的一个方法,可以与变量结合,也可以选取区域,以后做其他例子的时候再体会
Sub 方法3()
Range(Cells(1, 1), Cells(10, 1)).Select
End Sub
方法3:range的一个特殊用法,有两个参数,都是单元格,第一个单元格是选取的范围的起始单元格(左上角),第二个单元格是末尾单元格(右下角)
Sub 方法4()
Range([a1], [a10]).Select
End Sub
同方法3是range的特殊用法,只是单元格的表示不一样罢了
Sub 方法5()
Range(Range("a1"), Range("a10")).Select
End Sub
同方法3是range的特殊用法,只是单元格的表示不一样罢了
以上几种还可以变化出很多形式,如果怕搞混乱的话,可以不用记那么多的
只要记住一个range就行了
Range也记不住的话,可以用录制宏的方法截取代码。
还要记住range的一个特殊功能
就是可以选取分散的单元格区域,比如我想选取A1:A10,C1:C6单元格,代码如下
Sub 特殊用法()
Range("a1:a10,c1:c6").Select
End Sub
选取a1a10的代码.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-16 00:20 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
讲完单元格的表示方法之后,就需要学习变量了,因为学了这个之后可以做很多事情。变量有很多种,这里我只讲一个整型变量,整型变量就是说这个变量是整数,之所以将这个,是因为它还是和单元格的表示息息相关,经常用到。
Dim I as integer  就是说定义i是整型变量,不一定非要用i做变量,i只是一个名字,你可以用iNumber代替都可以,只要你能看懂  (当然还有一些小原则,比如不能用dim做变量,想想啊,dim已经用来做一个定义的语句了,怎么可能再用来做变量呢是吧?)

再学一个知识点,=   这个=呢是赋值的意思,比如i=5,意思是说把5赋值给i,
那么到这里思考一下一个问题,如果a=1,b=2,如何交换a和b的值呢?(不要想着直接a=2,b=1,为什么?思考思考思考……)
用一个寄存变量c做中介,代码如下
C=a
A=b
B=c
解释一下:先把a的值存放再c中,然后把b的值赋给a,然后再把c赋值给b
如果还觉得不形象,我再啰嗦一下:看成某男a捧着黄金,某男b捧着白银,让这两个人交换一下黄金白银,前提又不能让黄金白银散落在地上,那么就要找某男c,a把黄金给c,b再把白银给a,c再把黄金给b,交换的目的就达到了。C起到的作用是中介,寄存的作用。

这次要讲的是变量和单元格的结合,这么结合呢,如果i是个整型变量,i可以去1,2,3…..我让i和“a”结合在一起,以便表示a列i行,i可以随时变化,那么ai就随时改变单元格了,这里不能ai直接使用,这是规则没那么多为什么,文本和变量在一起要用个符号“&”连接起来,文本呢也需要用双引号连接起来。
那么如果i=10,那么a10单元格的表示方法是
Range(“a” & i),也可以是cells( i ,”a”),还可以是cells(i,1)
这个变量是不能用宏录制的方法截取到代码的

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-16 00:34 | 显示全部楼层
明天开始通过做例子学习代码和vba了

TA的精华主题

TA的得分主题

发表于 2010-7-16 09:19 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2010-7-16 09:34 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
我第一次这么做的,是向我的偶像胡版学习,通过发帖  给自己一点压力 呵呵

TA的精华主题

TA的得分主题

发表于 2010-7-16 11:29 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
对初学者很有帮助
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-6-2 10:11 , Processed in 0.048509 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表