1VB+VBA考试题型及比例:1.VBA部分占30%左右2.考试题型(选择20-25%,程序填空25-30%,程序阅读20%,编程30%)VBA——模块中的宏(Sub过程)和Function函数:设计与使用例:Subseries()'求Fibonacci数列Dimfib(1To30)AsLongDimiAsIntegerfib(1)=1fib(2)=1Fori=3To30fib(i)=fib(i-1)+fib(i-2)NextiFori=1To30Worksheets(Sheet1).Range(A+CStr(i))=fib(i)NextiEndSub(教材P.216——上机练习2)编制函数age,从身份证号中计算出年龄。在VBA中使用EXCEL工作表函数1.在VBA中调用工作表函数【例6-7】使用Min工作表函数求出单元格区域“A1:C10”中的最小值。DimanswerAsSingle,myRAsRangeSetmyR=Worksheets(Sheet1).Range(A1:C10)answer=Application.WorksheetFunction.Min(myR)MsgBoxanswer【例6-8】计算位于A1~A100单元格区域中的、值大于等于10且小于等于20的单元格数目。SetiRang=Worksheets(Sheet1).Range(A1:A100)WithApplication.WorksheetFunctionresult=.Countif(iRange,=10”)-.Countif(iRange,”&20)EndWith2.在单元格中插入工作表函数Subgenerate()‘生成随机数Worksheets(sheet1).Range(A1:C10).Formula==Int(Rand()*90+10)EndSub2VBA程序设计:常用属性、方法、事件过程对象(多级):Application、Workbooks、*Worksheets、**Range方法:Cells(1,1)=Application.InputBox(“输入姓名:”)’清除Sheet1的全部单元格的内容Worksheets(Sheet1).Cells.ClearContents常用属性:Cells(i,j)、ActiveCellSelection、ActiveSheet、ActiveCellTarget.row、Target.columnrows.count、columns.countUsedRange、CurrentRegion引用单元格和区域SubApplyColor()‘遍历Constlimit=30DimcAsRangeForEachcInRange(AA)Ifc.ValuelimitThenc.Interior.ColorIndex=3NextEndSubSubUnderline()‘相对引用ActiveCell.Offset(1,3).Font.Underline=xlDoubleEndSubSubObjectVar()’用Range对象引用DimwrAsRangeSetwr=Worksheets(1).Range(A1:D5)Withwr.Formula==Rand().Font.Bold=TrueEndWithEndSub在单元格区域中循环Fori=1To20Setcurc=Worksheets(Sheet1).Cells(i,3)curc.Font.ColorIndex=0IfAbs(curc.Value)10Thencurc.Font.ColorIndex=3NextiForEachcInWorksheets(Sheet1).Range(A1:D10).CellsIfAbs(c.Value)10Thenc.Font.ColorIndex=3Next3‘如果不知道循环的区域边界ForEachcInActiveCell.CurrentRegion.CellsIfAbs(c.Value)10Thenc.Font.ColorIndex=3Next选定和激活单元格常用方法:选中区域Select、激活单元格ActivateActiveCell.CurrentRegion.SelectSubabc()Range(A1:B1).SelectSelection.Font.Bold=TrueEndsub处理活动单元格:[例7-38]Subregion()Worksheets(Sheet1).ActivateActiveCell.CurrentRegion.SelectEndSub工作表上加控件,简单的用户窗体UserForm标签、命令按钮、文本框、列表框等常用事件(教材P.272程序设计题)Workbook_Open()Workbook_BeforeClose()Worksheet_selectionchang()Worksheet_chang()例:PrivateSubWorkbook_Open()‘写入一些只需执行一次的代码UserForm1.ShowEndSub注:对系统进行设置的代码一般不写在这里,而写入Workbook_Activate事件中。SubWorkbook_BeforeClose(CancelasBoolean)‘本事件常用于关闭前的数据检查Ifrange(“B11”).value=“”Then’假设B11为合计数所在的单元格Cancel=TrueMsgBox“合计数不能为空,不允许关闭!”EndifEndSub4程序框架*:变量声明、数据初始化(赋初值)数据输入(键盘输入、随机产生、文本框输入)数据计算/处理结果输出(窗体输出、标签框显示、MsgBox)程序中的特殊的语句形式*计数器i=i+1i=0累加器s=s+xs=0累积器p=p*xp=1累除器x=x/10标记器f=1/f=0f=true/f=false正负号变换器t=-tt=-1/1跟踪器p=i变量交换t=a:a=b:b=t变量转移x1=x2:x2=x3:x3=x1+x2终止标记x=-1111(x=9999)VB特点面向对象程序设计的思想——事件触发驱动VB编程环境既可编译执行,又可解释执行VB文件类型.vbp.frm.bas.exeVB控件通用属性NNaammeeCCaappttiioonnEEaannbblleeddVViissiibblleeLLeefftt,,TToopp,,WWiiddtthh,,HHeeiigghhtt((位位置置、、大大小小))BBaacckkccoolloorr,,FFoorreeccoolloorr,,FFoonnttNNaammee,,FFoonnttSSiizzee,,FFoonnttBBoolldd主要属性主要方法主要事件窗体FormMe.CCaappttiioonn==””MMyyWWiinnddooww””Printclsmoveform1.showform2.hideLoad()装载/启动Click()命令按钮commandCaption例:Command1.Caption=“OK(&X)”‘Alt+x键Click()标签框labelCaptionAutoSizeAlignment输出:label1.caption=str(x%)+”kg”文本框texttextlockedMultiLine(chr(13)+chr(10))ScrollbarPasswordChar‘输入:x=val(text2.text)‘输出text2.text=str(123)+”kg”事件:text1_Change()Subtext1_KeyPress(KeyAsciiAsInteger)ifkeyascii48orkeyascii57thenkeyascii=0ifkeyascii=13then….EndifEndSub5数组的定义optionbase0|1dimx(100)assingledimx(1to100)asstringdimy(3,4)asinteger动态数组的概念dima()asintegern=inputbox(“n=”)redima(n)数组的使用(重点复习)数组初始化、输入/输出、数组处理:求平均值、最大值、排序*(程序填空)、插入/删除(程序阅读P.149[4-16])数组输出:fori=1to100printa(i);ifimod10=0thenprintnextI二维数据的数据输出:fori=1to10forj=1to10printa(i);nextjprintnextI直接选择排序法fori=1ton-1forj=i+1tonifa(i)a(j)thent=a(i):a(i)=a(j):a(j)=tnextjnextI选择排序法Fori=1Ton-1t=i‘设下标i的元素值最小Forj=i+1TonIfa(j)a(t)Thent=jNextjIftiThen‘若a(i)不是最小,则交换位置min=a(t):a(t)=a(i):a(i)=minEndIfNexti自定义过程sub与函数function(重点复习)过程(按地址byref和按值byval传递)函数(返回值fn=要返回的值)(重点准备)数组作参数必须按地址传递过程sub与函数function的编程应用示例1.编写函数:求阶乘(P.187上机练习题2)、判断一个数是否为素数(P.163例5-2、5-3)、计算Single类型一维数组所有元素的平均值(P.186程序设计题1)2.编制过程mn,求integer类型一维数组中的最大值/最小值(P.171例5-9,P.176例5-13)。6种类名称表示形式数据类型基本类型Byte、Integer(2B)、Long(4B)、Single(4B)、Double(8B)、Currency(8B)String、Boolean(2B)、Date(8B)、Variant(16B)常量直接常量由其“书写”方式决定,例:1.23E-12、1.618!、&O16、&HA9、“A9”、true符号常量Const符号常量=表达式[As类型]例:ConstMyABC=“EnjoyVB!”变量变量命名字母[字母|数字|下划线]注:不能与关键字同名变量声明Dim变量名As类型[,变量As类型,……]例:DimiAsInteger(等价Dimi%)或:DimxAsInteger,yAsDoubleDimnameAsString*4变量作用域过程级变量Dim语句位于Sub过程内部、Static静态变量(值保留)模块级变量Dim语句位于“通用”声明处(两次调用期间变量值保留不变)函数数学函数Int()、Sqr()、Exp()、Log()、Sin(30*3.14/180)、Int(Rnd*(最大值-最小值+1)+最小值)字符函数Len()、Mid(s,Len(s),n)、Right(s,n)、Trim()、Ucase()、String()、InStr()转换函数Str()/Val()、Chr(Asc(“D”)+1)、CStr()其他函数Tab()、Spc()、Space()、Rgb()、Qbcolor()、Time、Date、Now运算符算术运算符^、*、/、Mod、\、+、-字符运算符+、&例:”ZUCC”+Str(2009)、”ZUCC”&2009注:连接方向关系运算符=、、、=、、=逻辑运算符Not、And、Or控制结构顺序结构变量=表达式例:x=x+1、y=x选择结构If条件1Then语句块1[ElseIf条件2Then语句块2……Else语句块n+1]EndIfSelectCase测试表达式Case表达式值1语句块1[Case表达式值2语句块2CaseElse语句块n+1]EndSelect循环结构For循环控制变量=初值To终值[Step步长]语句块Next循环控制变量Do[While|Until条件]语句块Loop[Wh