VBA入门之解析.docx
《VBA入门之解析.docx》由会员分享,可在线阅读,更多相关《VBA入门之解析.docx(18页珍藏版)》请在冰豆网上搜索。
VBA入门之解析
VBA入门之《与代码亲密接触》
去除粗枝繁叶,留一根主干,作攀天之梯,目标是那金碧辉煌的VBA殿堂。
一路上,两旁都是漂亮的姑娘,不要三心二意,请跟我走。
闲话少说,言归正传。
打开Excel,新建一工作簿。
0如果你的工具栏中找不到“控件工具箱”,请打开它。
控件工具箱可悬浮在工作表中,也可停靠在窗口的四周(如4楼图样)。
1点击命令按钮,在工作表中拖动鼠标至适合大小。
2按钮出来了。
通过右键菜单,可以编辑它的文字。
3点击控件工具箱中的“属性”按钮,或如上图所示的右键菜单中点击“属性”。
按钮的前景色、背景色、字体等统称为“属性”。
4设置属性虽然有趣,但总不过瘾,来点刺激的。
双击按钮,眼前是另一片天地,它叫做VB编辑器(或称VBE),VBA的一切神奇将从这里诞生。
5依样画葫芦。
在光标处输入下面一行代码:
QUOTE:
MsgBox"哈哈,我会VBA啦……"
msgbox不拘大小写,后面有一个空格,引号是半角引号。
输入完毕后点击工具按钮返回Excel窗口。
6点击控件工具箱中的“退出设计模式”按钮。
“芝麻开门”按钮周围的小圈圈没了,转换成运行模式。
这一步经常要做的,注意。
7点击按钮“芝麻开门”,这就是代码运行的效果图,一个系统对话框。
重复练习一遍:
点击“设计模式”按钮,再点击“芝麻开门”,这时按钮被选择。
点击“退出设计模式”,再点击“芝麻开门”,又进入运行状态。
8现在,由工作表界面切换到VBE界面,下列方式可任选一种:
☞按Alt+TAB选择VBE图标,松开复合键。
☞工作表标签右键菜单-查看代码。
☞菜单:
工具-宏-VB编辑器。
☞Alt+F11。
☞双击控件。
9将代码修改为:
QUOTE:
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,"神算子"
完整的代码是:
QUOTE:
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"
所以,点击按钮后,对话框中显示的信息为:
QUOTE:
你点击的单元格是:
$D$2
该单元格的值等于:
2006-8-10
Chr(13)代表一个回车符(信息分两行显示)。
后面的下划线“_”与显示无关,写代码的时候,如果一行太长,不方便阅读,可使用一个下划线把代码分两行或多行书写,不影响运行。
建议中间休息一下再继续,这一节任务不轻。
16添加第三个按钮,编辑文字为:
“点石成金”。
这里插一下,这些按钮上的文字称为“标签”(标签总是贴在上面的)。
不同的按钮可以使用相同的标签,但每一个按钮有一个独立的名字,看属性框的第一行。
与代码挂钩的正是这些名称。
代码PrivateSub后面的就是控件的名称。
17“神算子”功能实际是读取单元格属性。
我们也可以设置单元格属性:
用代码给单元格输入内容,改变单元格的字体、字号、颜色等,把单元格修饰得漂亮一点。
双击按钮,在光标处输入代码:
QUOTE:
Range("b8").Value=Range("b2").Value
退出设计模式,点击按钮运行它,先看看效果如何。
单元格B8被输入了与单元格B2相同的文字。
原来这Range("b8")即表示单元格B8。
代码解释:
单元格B8的值=单元格B2的值。
18除了用Range(),单元格还可用以下形式表示:
QUOTE:
[b8].Value=[b2].Value
效果与Range()形式完全相同,可把这一行代码代替原来代码试试。
还可以这样:
QUOTE:
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,添加第四个按钮“暗渡陈仓”,事件代码为:
QUOTE:
Sheets("VBA2").Range("D5").Value="明修栈道,暗渡陈仓。
"
[attach]169035[/attach]
VBA入门之二《一夜暴富》
经过VBA入门之一《与代码亲密接触》的学习,我们的收获应该是不小的,是吧?
1、能在工作表中使用按钮,能在VBE中创建代码,并运行它。
2、认识了一些对象:
按钮、工作表、单元格都是一个对象,初步建立了“对象”这个概念。
3、掌握了单元格对象的一些属性,如:
Value、Address。
4、知道单元格有Range()、Cells()、[]等几种表示方法。
5、接触了按钮的一些属性,如:
Left、Caption、Width、Height等等。
6、最值得高兴的是,你能读懂“CommandButton1.Caption”,看似长长的代码,其实就是“按钮1的标签”这意思。
我们熟悉的小数点在这里是一个连接符,起承上启下的作用。
有没有想过?
许多事情现在跃跃欲试,但就是不知道该用什么代码,这该死的代码。
别急,今晚,我们就来解决这一问题。
宏是什么东西?
Excel工具菜单下有个“宏”,这宏是什么东西?
宏是一段代码。
我们点击一个按钮运行一段代码,这一段代码就是一个宏。
菜单:
工具-宏中有个“录制新宏”,这又是什么意思?
录制新宏就是把我们对Excel的键盘和鼠标操作记录为代码。
没有发愣吧?
这东西好哩!
VBA入门之二《一夜暴富》2
我们就来试一试这“录制新宏”。
做点什么?
把当前工作表隐藏了,看录制的宏是什么东西。
说做就做:
①点击工具-宏-录制新宏:
这时,会显示工具“停止录制”,有两个按钮,一个是停止录制,点击它即停止录制宏。
另一个是“相对引用”,如果对单元格进行操作,选择或取消“相对引用”,录制出的代码是不一样的,你可另找时间研究它。
②操作:
格式-工作表-隐藏。
③点击“停止录制”按钮,也可以执行菜单命令“工具-宏-停止录制”。
VBA入门之二《一夜暴富》3
“录制新宏”的工作结束了,按Alt+F11打开VBE窗口:
系统自动增加一个模块“模块1”,刚才录制的宏就在这模块1下,如果看不到代码,双击“模块1”就是。
SubMacro1()和EndSub是宏的开始行和结束行。
Macro1是宏的名称。
绿色字体部分是注释,如果不喜欢,可以删掉它。
余下的只有一行:
ActiveWindow.SelectedSheets.Visible=False
这时,我们该怎么做?
按F1,查帮助。
用查户口的方式弄清每一个词的意义。
ActiveWindow:
当前窗口。
SelectedSheets:
选定的工作表。
Visible:
决定对象是否可见。
我们操作的对象是ActiveWindow.SelectedSheets,即当前窗口中的选定的工作表。
让工作表隐藏,即是Visible=False。
VBA入门之二《一夜暴富》4
看出点名堂来没有?
如果不用“ActiveWindow.SelectedSheets”这种方式来指定工作表,还能怎样?
回想一下,Sheets(工作表名),还记得吗?
我们能用代码隐藏指定的工作表(如sheet2)吗?
能:
QUOTE:
Sheets("Sheet2").Visible=False
当Visible=False时,表示隐藏,不可见,怎样表示可见呢?
取值等于False相反的逻辑值是True:
QUOTE:
Sheets("Sheet2").Visible=True
可以用我们已经熟悉的方式,把代码写在按钮的Click()过程中,点击按钮运行它。
[attach]169461[/attach]
小结:
本来我们不知道有Visible这么一个属性,因为需要,我们可以通过录制宏的办法记录对Excel的操作,再对宏代码进行分析,找到我们需要的代码并加以运用。
掌握了录制宏这一技巧,是不是受用无穷呢?
练习1:
编写代码,把工作表sheet3更名为“我的工作表”。
练习2:
编写代码,取消当前窗口中的滚动条(提示:
菜单:
工具-选项-视图)。
VBA入门之二《一夜暴富》5
练习还顺畅吗?
工作表具有Visible属性,改变它的值,即是隐藏或显示指定的工作表。
其它对象是否有这属性?
打开下面的附件看看:
[attach]169535[/attach]
VBA入门之二《一夜暴富》6
你一定已经知道,录制的宏可以直接运行。
运行宏的办法有多种:
①打开“工具-宏-宏”窗口,选择要运行的宏,点击按钮“运行”。
[attach]169520[/attach]
VBA入门之二《一夜暴富》7
录制宏注意事项。
录制宏主要有两个目的。
一是为了运用,如,当前工作表从第1行开始,每7行删除1行,我们可以录制一段宏,操作步骤是:
①将光标定位到要删除的第一行;
②开始录制(设置快捷键Ctrl+X、选择“相对引用”),完成两个动作:
⑴删除整行;
⑵光标下移6行到要删除的第2行,即第原来的第8行(最好用鼠标,可与键盘操作比较一下代码);
③停止录制。
[attach]169529[/attach]
利用这个实例,可对比领会一下“相对引用”的作用。
第二个目的,就是获取代码,我们不知道对象的属性、方法,通过录制宏来获取,再用到自己的代码中。
无论哪个目的,都要注意,不要进行不必要的操作,代码太多,不利于修改。
如果获取代码为目的,录制过程更要简洁些,一次录制的动作越少越好,分析的时候才不容易出差错。
这一讲到这结束。
VBA入门之二《一夜暴富》问题解答
QUOTE:
以下是引用xiaoxun在2006-8-1413:
03:
38的发言:
学生愚笨,请老师指点:
录制后结果不同,错在哪?
第一步,定位第一行,不是选择第一行,用鼠标点击第一行的某一单元格,如A1。
开始录制后,第一步是选择第一行(你原来录制前的操作)。