1、VBA程序设计实例精讲word资料19页第2章VBA程序设计“教书先生”恐怕是市井百姓最为熟悉的一种称呼,从最初的门馆、私塾到晚清的学堂,“教书先生”那一行当怎么说也算是让国人景仰甚或敬畏的一种社会职业。只是更早的“先生”概念并非源于教书,最初出现的“先生”一词也并非有传授知识那般的含义。孟子中的“先生何为出此言也?”;论语中的“有酒食,先生馔”;国策中的“先生坐,何至于此?”等等,均指“先生”为父兄或有学问、有德行的长辈。其实国策中本身就有“先生长者,有德之称”的说法。可见“先生”之原意非真正的“教师”之意,倒是与当今“先生”的称呼更接近。看来,“先生”之本源含义在于礼貌和尊称,并非具学问者
2、的专称。称“老师”为“先生”的记载,首见于礼记?曲礼,有“从于先生,不越礼而与人言”,其中之“先生”意为“年长、资深之传授知识者”,与教师、老师之意基本一致。2.1工作簿和工作表我国古代的读书人,从上学之日起,就日诵不辍,一般在几年内就能识记几千个汉字,熟记几百篇文章,写出的诗文也是字斟句酌,琅琅上口,成为满腹经纶的文人。为什么在现代化教学的今天,我们念了十几年书的高中毕业生甚至大学生,竟提起作文就头疼,写不出像样的文章呢?吕叔湘先生早在1978年就尖锐地提出:“中小学语文教学效果差,中学语文毕业生语文水平低,十几年上课总时数是9160课时,语文是2749课时,恰好是30%,十年的时间,二千七
3、百多课时,用来学本国语文,却是大多数不过关,岂非咄咄怪事!”寻根究底,其主要原因就是腹中无物。特别是写议论文,初中水平以上的学生都知道议论文的“三要素”是论点、论据、论证,也通晓议论文的基本结构:提出问题分析问题解决问题,但真正动起笔来就犯难了。知道“是这样”,就是讲不出“为什么”。根本原因还是无“米”下“锅”。于是便翻开作文集锦之类的书大段抄起来,抄人家的名言警句,抄人家的事例,不参考作文书就很难写出像样的文章。所以,词汇贫乏、内容空洞、千篇一律便成了中学生作文的通病。要解决这个问题,不能单在布局谋篇等写作技方面下功夫,必须认识到“死记硬背”的重要性,让学生积累足够的“米”。 一、创建和打开
4、工作簿一般说来,“教师”概念之形成经历了十分漫长的历史。杨士勋(唐初学者,四门博士)春秋谷梁传疏曰:“师者教人以不及,故谓师为师资也”。这儿的“师资”,其实就是先秦而后历代对教师的别称之一。韩非子也有云:“今有不才之子师长教之弗为变”其“师长”当然也指教师。这儿的“师资”和“师长”可称为“教师”概念的雏形,但仍说不上是名副其实的“教师”,因为“教师”必须要有明确的传授知识的对象和本身明确的职责。 Workbooks.Add创建一个新的工作簿Set NewBook=Workbooks.Add建工作簿,用对象变量表示NewBook.SaveAs Filename:=Test.xls工作簿另存为Wo
5、rkbooks.Open(D:Test.xls) 打开工作簿二、引用工作表Worksheets(1).Activate激活第一张工作表Sheets(4).Activate激活四张工作表Worksheets(Sheet1).Activate激活指定的工作表Sheets(Chart1).Activate激活图表“Chart1” 2.2单元格和区域一、引用单元格和区域1用A1样式记号引用单元格和单元格区域表2.1使用Range属性的A1样式引用示例引用含义Range(A1)单元格A1Range(A1:B5)从单元格A1到单元格B5的区域Range(C5:D9,G9:H16)多块选定区域Range(A
6、:A)A列Range(1:1)第一行Range(A:C)从A列到C列的区域Range(1:5)从第一行到第五行的区域Range(1:1,3:3,8:8)第1、3和8行Range(A:A,C:C,F:F)A、C和F列【例2.6】将工作表“Sheet1”中单元格区域A1:D5的字体设置为加粗。Sheets(Sheet1).Range(A1:D5).Font.Bold=True2.用编号引用单元格【例2.7】将Sheet1上的单元格A6的Value属性设置为10Worksheets(Sheet1).Cells(6,1).Value=10【例2.9】清除活动工作簿中Sheet1上的所有单元格的内容Wo
7、rksheets(Sheet1).Cells.ClearContents【例2.10】假设工作簿中Sheet1的A列是员工姓名(不超过50人),Sheet2的A列是员工姓名、B列是对应的电话号码。现在需将所有员工的电话号码填写到Sheet1中的B列(注:Sheet1中姓名“李三”在Sheet2中可能为“李三”,中间没有空格)。3.引用行和列【例2.11】将Sheet1上第一行单元格区域的Font对象Bold属性设置为True。Worksheets(Sheet1).Rows(1).Font.Bold=True表2.2 Rows和Columns属性的应用示例引用含义Rows(1)第一行Rows工作
8、表上所有的行Columns(1)第一列Columns(A)第一列Columns工作表上所有的列【例2.12】将活动工作表上的第一行、第三行和第五行的字体设置为加粗。Set myUn=Union(Rows(1),Rows(3),Rows(5)myUn.Font.Bold=True4.用快捷记号引用单元格【例2.13】将工作表“Sheet1”的单元格区域“A1:B5”内容清除。Worksheets(Sheet1).A1:B5.ClearContents5.引用命名区域【例2.14】将当前工作表中名为“AA”的单元格区域设置为30。AA.Value=30【例2.15】用GoTo方法激活工作簿“Boo
9、k1.xls”,选定区域“AA”,然后清除该区域内容。Application.Goto Reference:=Book1.xls!AASelection.ClearContents【例2.16】用ForEach.Next循环语句在命名区域中的每一个单元格上循环。如果该区域中的任一单元格的值超过25,就将该单元格的颜色更改为黄色。For Each c In Range(AA)If c.Value25 Thenc.Interior.ColorIndex=27End IfNext c6.相对于其他单元格来引用单元格【例2.17】将位于活动单元格下一行和右边三列的单元格的内容设置为双下划线格式。Act
10、iveCell.Offset(1,3).Font.Underline=xlDouble7.用Range对象引用单元格【例2.18】将Sheet1上的单元格区域A1:D5赋予该变量,随后用该变量代替该区域对象,填充随机函数。Set myRange=Worksheets(Sheet1).Range(A1:D5)myRange.Formula=RAND()8.引用多个单元格区域【例2.19】清除当前工作表上三个区域的内容。Range(C5:D9,G9:H16,B14:D18).ClearContentsRange(MyRange,YourRange,HisRange).ClearContents【例
11、2.20】将组合区域的字体设置为加粗。Set r1=Sheets(Sheet1).Range(A1:B2)Set r2=Sheets(Sheet1).Range(C3:D4)Set myMR=Union(r1,r2)myMR.Font.Bold=True【例2.21】计算选定区域中的数目,如果有多个区域,就显示一则警告消息。If Selection.Areas.Count1 ThenMsgBox请不要选择多个区域!End If二、在单元格区域中循环【例2.22】将单元格区域C1:C20所有绝对值小于10的数字都设置红色。For Cnt=1 To 20Set curC=Worksheets(Sh
12、eet1).Cells(Cnt,3)If Abs(curC.Value)10 ThencurC.Font.ColorIndex=3Next Cnt求区域末尾行号常用的方法:r=Range(A1).End(xlDown).Row 求A1单元格数据区末尾行号r=Cells(1,1).End(xlDown).Row 求A1单元格数据区末尾行号r=Range(A65536).End(xlUp).Row 求A列数据区末尾行号r=Cells(65536,1).End(xlUp).Row 求A列数据区末尾行号r=Columns(1).End(xlDown).Row 求A列数据区末尾行号求区域末尾列号常用的方
13、法:c=Range(A1).End(xlToRight).Column 求A1单元格数据区末尾列号c=Cells(1,1).End(xlToRight).Column 求A1单元格数据区末尾列号c=Cells(1,256).End(xlToLeft).Column 求第1行数据区末尾列号c=Rows(1).End(xlToRight).Column 求第1行数据区末尾列号【例2.23】将单元格区域A1:D10所有绝对值小于10的数字都设置为红色。For Each c In Worksheets(Sheet1).Range(A1:D10).CellsIf Abs(c.Value)10 Thenc
14、.Font.ColorIndex=3Next【例2.24】将活动单元格区域所有绝对值小于10的数字都设置为红色。For Each c In ActiveCell.CurrentRegion.CellsIf Abs(c.Value)10 Thenc.Font.ColorIndex=3Next三、选定和激活单元格1.使用Select方法和Selection属性【例2.25】将A1:B1单元格中的内容加粗。Range(A1:B1).SelectSelection.Font.Bold=True也可以用下面语句:Range(A1:B1).Font.Bold=True2.选定活动工作表上的单元格【例2.2
15、6】将Sheet1中的一行复制到Sheet2上。Worksheets(Sheet1).Rows(1).CopyWorksheets(Sheet2).SelectWorksheets(Sheet2).Rows(1).SelectWorksheets(Sheet2).Paste3.激活选定区域内的单元格【例2.27】选定一个区域,激活区域内的一个单元格,但并不改变选定区域。Range(A1:D4).SelectRange(B2).Activate四、处理三维区域【例2.28】设置三维单元格区域的边框格式。Sheets(Array(Sheet2,Sheet3,Sheet5).SelectRange(A1:H1).SelectSelection.Borders(xlBottom).LineStyl
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1