VBA入门.docx

上传人:b****4 文档编号:6876306 上传时间:2023-05-10 格式:DOCX 页数:24 大小:906.47KB
下载 相关 举报
VBA入门.docx_第1页
第1页 / 共24页
VBA入门.docx_第2页
第2页 / 共24页
VBA入门.docx_第3页
第3页 / 共24页
VBA入门.docx_第4页
第4页 / 共24页
VBA入门.docx_第5页
第5页 / 共24页
VBA入门.docx_第6页
第6页 / 共24页
VBA入门.docx_第7页
第7页 / 共24页
VBA入门.docx_第8页
第8页 / 共24页
VBA入门.docx_第9页
第9页 / 共24页
VBA入门.docx_第10页
第10页 / 共24页
VBA入门.docx_第11页
第11页 / 共24页
VBA入门.docx_第12页
第12页 / 共24页
VBA入门.docx_第13页
第13页 / 共24页
VBA入门.docx_第14页
第14页 / 共24页
VBA入门.docx_第15页
第15页 / 共24页
VBA入门.docx_第16页
第16页 / 共24页
VBA入门.docx_第17页
第17页 / 共24页
VBA入门.docx_第18页
第18页 / 共24页
VBA入门.docx_第19页
第19页 / 共24页
VBA入门.docx_第20页
第20页 / 共24页
亲,该文档总共24页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

VBA入门.docx

《VBA入门.docx》由会员分享,可在线阅读,更多相关《VBA入门.docx(24页珍藏版)》请在冰点文库上搜索。

VBA入门.docx

VBA入门

VBA入门

VBA入门之一《与代码亲密接触》

去除粗枝繁叶,留一根主干,作攀天之梯,目标是那金碧辉煌的VBA殿堂。

一路上,两旁都是漂亮的姑娘,不要三心二意,请跟我走。

闲话少说,言归正传。

打开Excel,新建一工作簿。

0如果你的工具栏中找不到“控件工具箱”,请打开它。

控件工具箱可悬浮在工作表中,也可停靠在窗口的四周(如4楼图样)。

1点击命令按钮,在工作表中拖动鼠标至适合大小。

2按钮出来了。

通过右键菜单,可以编辑它的文字。

3点击控件工具箱中的“属性”按钮,或如上图所示的右键菜单中点击“属性”。

按钮的前景色、背景色、字体等统称为“属性”。

4设置属性虽然有趣,但总不过瘾,来点刺激的。

双击按钮,眼前是另一片天地,它叫做VB编辑器(或称VBE),VBA的一切神奇将从这里诞生。

5依样画葫芦。

在光标处输入下面一行代码:

MsgBox"哈哈,我会VBA啦……"

msgbox不拘大小写,后面有一个空格,引号是半角引号。

输入完毕后点击工具按钮返回Excel窗口。

6点击控件工具箱中的“退出设计模式”按钮。

“芝麻开门”按钮周围的小圈圈没了,转换成运行模式。

7点击按钮“芝麻开门”,这就是代码运行的效果图,一个系统对话框。

8现在,由工作表界面切换到VBE界面,下列方式可任选一种:

F按Alt+TAB选择VBE图标,松开复合键。

F工作表标签右键菜单-查看代码。

菜单:

工具-宏-VB编辑器。

9将代码修改为:

PrivateSubCommandButton1_Click()

   ctxt="哈哈,我会VBA啦……"

   MsgBoxctxt,64,"宣告"

   EndSub

实际修改的是中间的黑色字体部分。

代码中,蓝色处是一个空格,粉红色处是一个逗号。

命令后面、命令与命令之间,间隔一个以上的空格。

参数与参数之间,用逗号分开。

运行代码的办法,除了在工作表上点击按钮,还可以在VBE窗口中直接运行,把光标定位到代码首尾之间(从“PrivateSubCommandButton1_Click()”到“EndSub”),如下图所示执行菜单命令或按F8,逐行执行代码。

如果执行“运行-运行子过程”命令(按F5),将连续执行过程首尾之间的全部代码。

10代码的解释:

ctxt叫做自定义变量,就像我们代数中常用的x、y、z一样。

ctxt="……"叫做赋值,跟代数中的赋值是一样的。

11MsgBox是什么东西?

我们总是想知道。

请选择MsgBox(实际上,只需把光标定位到命令中的任意位置均可),按F1键,系统将弹出帮助窗口并显示该命令的帮助。

12在B2:

D4单元格输入一些数据备用。

为工作表添加第二个按钮。

这个按钮的功能是:

用鼠标点击这些单元格,然后点击按钮,像上例一样弹出一个对话框,显示的内容为这个单元格的名称和内容。

13双击按钮。

在光标闪烁处,输入代码:

msgbox"你点击的单元格是:

" & 

(蓝色位置表示空格),接下来要输入的代码是“ActiveCell.Address”,输入这些代码可以使用键盘输入,也可以从属性列表中选择。

按Ctrl+J,在代码窗口中弹出一个下拉列表,就是属性/方法列表,将光标移动到ActiveCell,然后点击键盘上的小数点“.”,结果ActiveCell连同小数点被输入到代码窗口中。

窗口中继续显示属性列表中,选择属性“Address”,按空格键输入该属性。

接着,输入“& Chr(13) _”,回车换行,继续输入:

& "该单元格的值等于:

" & ActiveCell.Value,64,"神算子"

完整的代码是:

Private Sub CommandButton2_Click()

    MsgBox "你点击的单元格是:

" & ActiveCell.Address & Chr(13) _

    & "该单元格的值等于:

" & ActiveCell.Value,64,"神算子"

    End Sub

辛苦了。

返回Excel,退出设计模式,先看一下运行的效果。

14切换到Excel,退出设计模式,测试代码:

用鼠标点击单元格D4,然后点击按钮。

效果如下所示:

点击确定按钮。

点击其它单元格,再点击按钮,多试几遍。

15代码解释:

ActiveCell表示活动单元格,即光标所在的单元格,Address表示地址,中间的“.”是连接符。

ActiveCell.Address即是:

当前单元格的地址。

ActiveCell.Value即是:

当前单元格的值。

点击D2单元格,因为当前单元格的地址是“$D$2”,即:

ActiveCell.Address="$D$2"

D2单元格的值是“2006-8-10”,即:

ActiveCell.Value="2006-8-10"

所以,点击按钮后,对话框中显示的信息为:

你点击的单元格是:

$D$2

该单元格的值等于:

2006-8-10

Chr(13)代表一个回车符(信息分两行显示)。

建议中间休息一下再继续,这一节任务不轻。

16添加第三个按钮,编辑文字为:

“点石成金”。

这里插一下,这些按钮上的文字称为“标签”(标签总是贴在上面的)。

不同的按钮可以使用相同的标签,但每一个按钮有一个独立的名字,看属性框的第一行。

与代码挂钩的正是这些名称。

代码PrivateSub后面的就是控件的名称。

17“神算子”功能实际是读取单元格属性。

我们也可以设置单元格属性:

用代码给单元格输入内容,改变单元格的字体、字号、颜色等,把单元格修饰得漂亮一点。

双击按钮,在光标处输入代码:

Range("b8").Value=Range("b2").Value

退出设计模式,点击按钮运行它,先看看效果如何。

单元格B8被输入了与单元格B2相同的文字。

原来这Range("b8")即表示单元格B8。

代码解释:

单元格B8的值=单元格B2的值。

 

18除了用Range(),单元格还可用以下形式表示:

[b8].Value=[b2].Value

效果与Range()形式完全相同,可把这一行代码代替原来代码试试。

还可以这样:

 

Cells(8,2).Value=Cells(2,2).Value

 

19属性Value可以省略

上面代码一一可以省略为以下形式:

Range("b8")=Range("b2")

[b8]=[b2]

Cells(8,2)=Cells(2,2)

在VBE窗口中,绿色(默认)文字表示是注释文字,不被运行的。

前面加一半角的单引号即设置后面的文字为注释文字。

删除前面的单引号即是取消注释功能。

20单元格除了“地址”、“值”两个属性以外,还有许多属性,如:

宽度、高度、字体、字号等等。

一一把下面代码复制到过程中,运行它,观察单元格的变化。

ActiveCell.ColumnWidth=20'设置活动单元格的宽度为20

ActiveCell.RowHeight=40'设置活动单元格的高度为40

ActiveCell.Font.Name="黑体"'设置活动单元格的字体的名称为“黑体”

ActiveCell.Font.Size=20'设置活动单元格的字体的尺寸为20

也可用指定的单元格代替活动单元格(ActiveCell),如:

Range("d3").Font.Size=30。

21如何读写其它工作表的单元格呢?

把工作表sheet2重命名为VBA2,添加第四个按钮“暗渡陈仓”,事件代码为:

Sheets("VBA2").Range("D5").Value="明修栈道,暗渡陈仓。

"

运行它。

代码增加一行:

Sheets("VBA2").Range("D5").Value="明修栈道,暗渡陈仓。

"

Sheets("VBA2").Activate'使工作表VBA2成为活动的工作表,即由Sheet1切换到VBA2窗口。

练习一下:

设置VBA2中A1单元格内容为:

“成绩表”,字体为“隶书”,字号为30,居中(代码为.HorizontalAlignment=xlCenter)

不要急于打开它--山菊花的忠告。

VBA入门之二《一夜暴富》

经过VBA入门之一《与代码亲密接触》的学习,我们的收获应该是不小的,是吧?

1、能在工作表中使用按钮,能在VBE中创建代码,并运行它。

2、认识了一些对象:

按钮、工作表、单元格都是一个对象,初步建立了“对象”这个概念。

3、掌握了单元格对象的一些属性,如:

Value、Address。

4、知道单元格有Range()、Cells()、[]等几种表示方法。

5、接触了按钮的一些属性,如:

Left、Caption、Width、Height等等。

6、最值得高兴的是,你能读懂“CommandButton1.Caption”,看似长长的代码,其实就是“按钮1的标签”这意思。

我们熟悉的小数点在这里是一个连接符,起承上启下的作用。

有没有想过?

许多事情现在跃跃欲试,但就是不知道该用什么代码,这该死的代码。

别急,今晚,我们就来解决这一问题。

宏是什么东西?

Excel工具菜单下有个“宏”,这宏是什么东西?

宏是一段代码。

我们点击一个按钮运行一段代码,这一段代码就是一个宏。

菜单:

工具-宏中有个“录制新宏”,这又是什么意思?

录制新宏就是把我们对Excel的键盘和鼠标操作记录为代码。

没有发愣吧?

这东西好哩!

我们就来试一试这“录制新宏”。

做点什么?

把当前工作表隐藏了,看录制的宏是什么东西。

说做就做:

①点击工具-宏-录制新宏:

这时,会显示工具“停止录制”,有两个按钮,一个是停止录制,点击它即停止录制宏。

另一个是“相对引用”,如果对单元格进行操作,选择或取消“相对引用”,录制出的代码是不一样的,你可另找时间研究它。

②操作:

格式-工作表-隐藏。

③点击“停止录制”按钮,也可以执行菜单命令“工具-宏-停止录制”。

“录制新宏”的工作结束了,按Alt+F11打开VBE窗口:

系统自动增加一个模块“模块1”,刚才录制的宏就在这模块1下,如果看不到代码,双击“模块1”就是。

SubMacro1()和EndSub是宏的开始行和结束行。

Macro1是宏的名称。

绿色字体部分是注释,如果不喜欢,可以删掉它。

余下的只有一行:

ActiveWindow.SelectedSheets.Visible=False

这时,我们该怎么做?

按F1,查帮助。

用查户口的方式弄清每一个词的意义。

ActiveWindow:

当前窗口。

SelectedSheets:

选定的工作表。

Visible:

决定对象是否可见。

我们操作的对象是ActiveWindow.SelectedSheets,即当前窗口中的选定的工作表。

让工作表隐藏,即是Visible=False。

看出点名堂来没有?

如果不用“ActiveWindow.SelectedSheets”这种方式来指定工作表,还能怎样?

回想一下,Sheets(工作表名),还记得吗?

我们能用代码隐藏指定的工作表(如sheet2)吗?

能:

Sheets("Sheet2").Visible=False

当Visible=False时,表示隐藏,不可见,怎样表示可见呢?

取值等于False相反的逻辑值是True:

Sheets("Sheet2").Visible=True

可以用我们已经熟悉的方式,把代码写在按钮的Click()过程中,点击按钮运行它。

小结:

本来我们不知道有Visible这么一个属性,因为需要,我们可以通过录制宏的办法记录对Excel的操作,再对宏代码进行分析,找到我们需要的代码并加以运用。

掌握了录制宏这一技巧,是不是受用无穷呢?

练习1:

编写代码,把工作表sheet3更名为“我的工作表”。

练习2:

编写代码,取消当前窗口中的滚动条(提示:

菜单:

工具-选项-视图)。

练习还顺畅吗?

工作表具有Visible属性,改变它的值,即是隐藏或显示指定的工作表。

其它对象是否有这属性?

打开下面的附件看看:

visible.rar

你一定已经知道,录制的宏可以直接运行。

运行宏的办法有多种:

①打开“工具-宏-宏”窗口,选择要运行的宏,点击按钮“运行”。

如果选择这种方式运行,在建立宏的时候,为宏取一个通俗易懂的名字很重要。

②在VBE窗口中,将光标定位到要运行的宏过程中,按F8单步运行(用于测试),按F5运行。

③用窗口控件。

如果“窗口”工具栏没有显示,可如下图所示打开它:

“窗口”控件与“控件工具箱”控件酷似,但再相似总是两种不同的东西。

在工具栏中点击按钮,在工作表上拖出图形,松开鼠标,它会弹出一个“指定宏”窗口:

选择你要运行的宏,确定。

然后,你可以修改按钮标签。

用鼠标点击一下单元格,退出按钮的被选取状态。

将鼠标移到按钮上,显示的是一个手形,不是箭头。

点击它,运行宏。

④在工作表上插入一图片或插入一个自选图形,右键菜单也有一个“指定宏”项目,点击它,也可以选定宏。

退出后,点击该图片,也可运行一段宏:

录制宏注意事项。

录制宏主要有两个目的。

一是为了运用,如,当前工作表从第1行开始,每7行删除1行,我们可以录制一段宏,操作步骤是:

①将光标定位到要删除的第一行;

②开始录制(设置快捷键Ctrl+X、选择“相对引用”),完成两个动作:

⑴删除整行;

⑵光标下移6行到要删除的第2行,即第原来的第8行(最好用鼠标,可与键盘操作比较一下代码);

③停止录制。

利用这个实例,可对比领会一下“相对引用”的作用。

第二个目的,就是获取代码,我们不知道对象的属性、方法,通过录制宏来获取,再用到自己的代码中。

无论哪个目的,都要注意,不要进行不必要的操作,代码太多,不利于修改。

如果获取代码为目的,录制过程更要简洁些,一次录制的动作越少越好,分析的时候才不容易出差错。

这一讲到这结束

以下是引用xiaoxun在2006-8-1413:

03:

38的发言:

学生愚笨,请老师指点:

录制后结果不同,错在哪?

第一步,定位第一行,不是选择第一行,用鼠标点击第一行的某一单元格,如A1。

开始录制后,第一步是选择第一行(你原来录制前的操作)。

以下是引用mannewer123在2006-8-1516:

18:

53的发言:

在VBA入门之二《一夜暴富》7中提到:

利用这个实例,可对比领会一下“相对引用”的作用

可是我用了两种方法做了以后,怎么感觉是一样的啊,能不能请山老师具体解释下两个的区别,谢谢~

不能凭感觉,要用事实说话。

两种模式下录制宏,再分别运行它(多运行几次),看工作表变化。

VBA入门之三《夏夜,我们看萤火虫》

气温日见上升,在没有空调的电脑房里笑傲秋老虎,真英雄也。

苦在今宵,乐在明朝,坚持吧,满嘴VBA行话,是不是你长久期待、梦寐以求的酷?

1、“事件”像萤火虫,有心看它,你会觉得很美。

开关一按,灯亮了

把手一扬,的士靠边停下

老师说“下课”,同学们涌出教室

灯亮了、的士停下、涌出教室都是“事件”,这些事件的发生都有前因后果,因为“一按”,所以“亮了”等等。

在特定环境下,什么样的动作与什么样的事件都是一一对应的。

三句不离本行,我要说的是,在VBA工程中,存在许许多多的事件。

还记得吗?

点击按钮,弹出一个对话框“哈哈,我会VBA啦……”

还记得吧?

点击按钮,为A8单元格填充了一个数据。

因为“点击”,所以发生后面的“事件”。

打开下面的附件,有两个工作表,用鼠标去点击按钮和图片,稍后回来,我们一起讨论“事件”。

VBA4.rar

2、“事件”像萤火虫,有心看它,总想知道它在哪发光。

在第一个工作表中,有两个按钮,当你把鼠标移到它上面时,它就移动一个位置。

第二个工作表中,用左键和右键得到不同的运行效果。

这都是运用“事件”的效果。

①鼠标单击事件Click。

实际上,我们从第一讲开始就接触了“事件”,只是没有提它,你也可能没有在意。

打开你编写过代码的工作簿,在VBE编辑窗口中可以看到,无论按钮的名称是CommandButton1,还是CommandButton2,代码第一行的后面都是“_Click()”:

PrivateSubCommandButton1_Click()

       MsgBox"哈哈,我会VBA啦……"

   

   EndSub

这个“Click”表示“鼠标的单击事件”。

就像你家的开关不能控制他家的灯一样,用鼠标单击不同的控件,都发生“Click”事件,但触发运行的代码却各不相同,点击CommandButton1,运行:

PrivateSubCommandButton1_Click()

   EndSub

点击CommandButton2,运行:

PrivateSubCommandButton2_Click()

   EndSub

②鼠标移动事件。

单击控件时,触发“Click”事件,除了该事件,还有哪些“事件”呢?

在上面附件中找到如下代码(如果找不到,先到楼下看看,记着回来哦):

PrivateSubCommandButton1_MouseMove(ByValButtonAsInteger,ByValShiftAsInteger,ByValXAsSingle,ByValYAsSingle)

   '当鼠标移动到按钮CommandButton1上面时,发生本事件,执行下面代码:

   CommandButton1.Top=CommandButton1.Top+10

   CommandButton1.ForeColor=Int(Rnd*16777215)

   

EndSub

“MouseMove”是移动鼠标事件。

如果你想在鼠标移动到CommandButton2时返回什么信息或者修改某单元格的值,那么你应该把代码写在:

PrivateSubCommandButton2_MouseMove(ByValButtonAsInteger,ByValShiftAsInteger,ByValXAsSingle,ByValYAsSingle)

'这里写代码

EndSub

③点击鼠标按钮事件。

哄小孩子的把戏结束了,小孩子不会知道这是点击鼠标按钮事件“MouseDown”,但你会知道,应该知道。

PrivateSubImage1_MouseDown(ByValButtonAsInteger,ByValShiftAsInteger,ByValXAsSingle,ByValYAsSingle)

   '在控件Image1上按下鼠标按钮时,触发本事件,运行如下代码:

   

   MsgBox"回答"&Mid("对错",Button,1)&"了。

           ",64-(Button-1)*16,"蓝猫告诉你"

   [c3]=Int(Rnd*20)

   [e3]=Int(Rnd*20)

   

EndSub

MouseDown与Click好像是同一回事,点击鼠标左键既触发“Click”事件,又触发“MouseDown”事件,它们之间的区别是,“MouseDown”发生在鼠标按下按钮还没有松开的那一段时间,接着松开鼠标又触发“MouseUp”事件,“Click”是整个过程,点击过按钮后,先触发“MouseDown”事件,后触发“Click”事件。

另一个区别是,鼠标右键点击控件,不触发“Click”事件。

除了以上介绍的“事件”,还有许多:

激活工作表的时候,触发Activate事件。

当用鼠标右键单击工作表时产生BeforeRightClick事件。

打开工作簿时,触发Open事件。

打印工作表时,触发BeforePrint事件。

等等

不同对象间的事件不一定相同,如按钮有13个事件,工作表有9个事件,工作簿有28个事件,以后会掌握的。

这一层介绍几个概念,可以不看。

3、控件的名称

按钮和其它所有的控件,都有默认的名字,但允许修改它。

练习一下,添加按钮,打开属性框,修改名称,双击控件进入VBE窗口,观察过程名称(控件名_事件名)。

4、工程、模块、过程

下图所示的窗口称为“工程资源管理器”。

一个工作簿对应一个VBA“工程”,工程下面分若干“模块”,模块中可以有若干“过程”。

模块是对过程管理的一个中间层,可以理解为一个目录的作用。

你的控件在sheet1中,双击它,自动把代码写在sheet1的模块里,如果控件在sheet2,双击它,则自动把代码写在sheet2的模块里,不同工作表可以有相同名称的控件,对应地,不同模块里,可以有相同名称的过程。

右键单击工作表标签,选择“查看代码”,自动打开该工作表对应的模块。

在工程资源管理器里,双击模块名,打开该模块。

可以浏览和编辑该模块下的过程代码。

VBE主窗口是代码编辑器,灰色线条分开的是各个过程。

5、“事件”像萤火虫,只要你喜欢,可以捧在手心,可以把它放飞。

看这个帖子,可谓喜忧参半,VBA逐渐被我们掌控和驯服,这是喜,可是,那比火车还长的过程名,让人看了心里发毛,怎么记呀,怎么写呀?

就像这:

PrivateSubCommandButton2_MouseMove(ByValButtonAsInteger,ByValShiftAsInteger,ByValXAsSingle,ByValYAsSingle)

EndSub

是啊,谁能把它背下来。

不用背,我就没背过,相信你也不用,耳听为虚,眼见为实:

在控件所在模块中,点击如图所示的“对象”下拉菜单,你工作表中添加的控件,都在这个列表中。

如图所示,选择它。

如果还没有为这个对象编写过代码,它会自动建立一个默认的过程。

如果这个过程不是你需要的,以后可以删除它,留一个空的过程在哪也没关系。

选择好对象之后,窗口右边的一个组合框就是这个对象的“事件”列表,也即是“过程”列表。

点击下拉按钮,选择你需要的过程名:

接下来,就是发挥你智慧的时候了,试试在过程中写上点什么代码,然后制造点“事端”运行它。

耳听为虚,眼见为实,手动为真。

练习:

把“中国移动”改为“一江春水向东流”,让鼠标一碰它就往右挪,“月亮走我也走”改为“跟屁虫”,当鼠标碰到它时,就跟在前边按钮的后面,两个按钮相互连着:

练习:

把按钮改为图片控件(Image),自己定义它的运动方向和规则,再作练习。

VBA5

6、“事件”像萤火虫,东边在飞,西边也在飞。

与控件存在事件一样,工作表也存在事件,共有9个。

这9个事件当中,其中有两个是编程中最常用到的,可称亨哈二将,在此认识认识它:

①选定新的单元格区域时,产生SelectionChange事件。

②改变单元格的值时,产生Change事件。

VBA6.rar

这两个事件是非常实用且常用的,在网上有大量的实例,建议大家多交流这方面的学习、应用心得。

应用示例一二:

把代码加到当前工作表模块中。

PrivateSubWorksheet_SelectionChange(ByValTargetAsRange)

Application.EnableEvents=Fal

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 表格模板 > 表格类模板

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2