您好,欢迎访问三七文档
1.14条件判断语句select-单条件(4)Subtext()Dimpad$0:00pad=InputBox(请输入密码)SelectCasepadCase888MsgBox密码正确,登录成功CaseElseMsgBox密码不正确GoTo0EndSelectEndSub1.15条件判断语句select-多条件(5)Subtest()Dimsr0sr=InputBox(请输入季节)SelectCasesrCase春MsgBox春天花会开,鸟儿自由自在Case夏MsgBox夏日炎热,注意防暑Case秋MsgBox暗送秋天的菠菜Case冬MsgBox银装硕果白雪皑皑CaseElseMsgBox你输入错误GoTo0EndSelectEndSub1.16循环语句fornext-正真的应用从这里开始(1)圈数循环0Subtext()产品数量单价金额dimnum%纯奶1255.14fornum=1to5金典4452msgbox第&num&圈优酸240nextnum安慕希6844.72endsub1.17循环语句fornext应用(密码验证)Sub密码验证()Dimnum%Fornum=3To1Step-1IfInputBox(请输入密码)=123ThenMsgBox你咋知道的呢!ExitFor或者end区别在于end是结束所有的运行ElseMsgBox你还有&num&次机会,加油哟!EndIfNextnumEndSub1.18循环语句fornext嵌套应用Sub乘法表()Dimnum%,num2%Fornum=1To9Fornum2=1To9Ifnum2numThenExitForElseCells(num,num2)=num2&x&num&=&num*num2EndIfNextnum2NextnumEndSub1.19循环语句foreachnext基础说明:workbooks当前打开的所有工作簿worksheets指定工作簿下的所有工作表range(a1:c6)指定单元格格区域下的所有单元格Subtext()DimwbAsWorkbookForEachwbInWorkbooksMsgBoxwb.NameNextwbDimwsAsWorksheetForEachwsInWorksheetsMsgBoxws.NameNextwsEndSub1.20循环语句foreachnext应用Sub提成金额算法()业务员业绩DimcellsAsRange张三1200120ForEachcellsIn[f83:f87]李四1422142.2cells.Offset(0,1)=cells.Value*0.1王五1500150Nextcells朝气1202120.2EndSub王八1544154.41.21循环语句doloop基础Sub循环doloop()Dimnumber&Donumber=number+1Ifnumber5ThenMsgBoxnumberElseExitDoEndIfLoopEndSub1.22循环语句doloop应用Sub计算结果()品项单价数量Dimaa%A11215aa=1A21316DoA31417aa=aa+1A41518Ifcells(aa,a)=ThenA51619ExitDoA61720ElseA71821cells(aa,d)=cells(aa,b)*cells(aa,c)A81922EndIfA92023LoopA102124EndSub1.23循环语句之until与whileSubuntil使用()Dimnumber%until直到条件成立时,停止循环Dowhile当条件成立时,开始循环number=number+1MsgBoxnumberunitl、while可放在loop后面也可放在do后面,放在前面表示先判断再运行,放在后面表示先运行后判断LoopUntilnumber3条件判断一般用untilwhile不用if之前EndSub1.24循环语句之until与while应用Sub金额计算()品项单价数量Dimnum%A11215num=123A21316DoA31417num=num+1A41518cells(num,6).Offset(0,2)=cells(num,6)*cells(num,6).Offset(0,1)A51619A61720LoopUntilcells(num+1,6)=A71821A81922EndSubA92023A1021241.25循环语句总结fornext主要是针对数字循环,如果数字是从小到大1步就省略step是负数就要写出来foreachnext主要针对集合或数组doloop循环内容不确定,关键在于退出和累加。累加变量=变量+步长(1,2.3…)Sub连接符()Dimnum,strDonum=num+1str=str&?&num&?学会连接符使用MsgBoxstrLoopUntilnum5EndSub1.26再谈运算符likelike:用来比较两个字符串,返回值是逻辑值true或false语法结构:result=stringlikepatternpattern中的字符符合string中的?任何单一字符*零个或多个字符#任何一个数字(0-9)[charlist]charlist中的任何单一字符看视频,讲基础内容[!charlist]不在charlist中的任何单一字符1.27like运算符的应用Sub统计人数()DimcellsAsRange,fenshuAsRange,n%姓名分数ForEachcellsIn[i157:i159]1100ForEachfenshuIn[g157:g166]298Iffenshu.ValueLikecells.ValueThenn=n+1322Nextfenshu488cells(1,2)=n587n=0681Nextcells7缺考EndSub8作废910.2410891.28一种偏移两种方法(用属性获取区域offset)Sub偏移方法()单价数量DimrangAsRange1316ForEachrangIn[h169:h174]1417'rang=rang(1,0)*rang(1,-1)1518rang=rang.Offset(0,-1)*rang.Offset(0,-2)1619Next1720EndSub18211.29单元格尺寸选择resize属性姓名班级Sub筛选()A0011班DimrngAsRange,num%A0022班num=176A0033班ForEachrngIn[g176:g190]A0041班Ifrng.Value=1班ThenA0052班num=num+1A0063班cells(num,l).Resize(1,5)=rng.Offset(0,-1).Resize(1,5).ValueA0071班EndIfA0082班NextrngA0093班[l176:p176]=[f175:j175].ValueA0101班EndSubA0112班A0123班A0131班A0142班A0153班1.3单元格尺寸选择另类方法Sub区域选择()姓名班级Range(g200).Range(a1:d3).SelectA0011班EndSubA0022班A0033班Sub列选择()A0041班Range(g200).EntireColumn.SelectA0052班EndSubA0063班A0071班Sub行选择()A0082班Range(g200).EntireRow.SelectA0093班EndSubA0101班A0112班Sub行选择之后区域选择()A0123班Range(g200).EntireRow.Range(f1:j3).SelectA0131班EndSubA0142班A0153班Sub筛选1班全部信息()Dimrange,num%num=193ForEachrangeIn[g194:g208]Ifrange.Value=1班Thennum=num+1cells(num,l).Resize(1,5)=range.EntireRow.range(f1:j1).ValueEndIfNext[l193:p193]=[f193:p193].ValueEndSub1.31单元格的并集union难A001A004A007A010A01300Sub金额()Dimnum%Fornum=34To37Cells(num,7)=Cells(num,5)*Cells(num,6)NextnumEndSub1x1=11x2=22x2=41x3=3法一法二Sub新增财务部()Sub新增财务部()法一end结束就不循环DimwsAsWorksheetDimwsAsWorksheet法二exitfor代替end同时else与endif都要有ForEachwsInWorksheetsForEachwsInWorksheetsIfws.Name=财务部ThenEndif后面怎么没有elseIfws.Name=财务部ThenNextwsExitForWorksheets.Add.Name=财务部ElseEndSubWorksheets.Add.Name=财务部EndIfNextwsEndSub180还可以用fornext和foreachnext来做,对比一下三者之间的优劣208用doloop可以在下面增加的情况下继续执行,相当于动态执行,关键在于cells(num,e)=这个命令。当然另外连个也可以,自己试试2382703043403784184605040unitl、while可放在loop后面也可放在do后面,放在前面表示先判断再运行,放在后面表示先运行后判断208238270304340378418460504fornext主要是针对数字循环,如果数字是从小到大1步就省略step是负数就要写出来doloop循环内容不确定,关键在于退出和累加。累加变量=变量+步长(1,2.3…)要求表达式人数80-90分[89]?55已考人数#*77未考人数*[!0-9]*22金额208238270304340378语文数学英语要求:筛选出1班的所有记录552222姓名班级语文数学655522A0011班5522489855A0041班5468.57143546998A0071班9877.46429227269A0101班74.598557572A0131班83.3928674.5987775692277725569759872776969807272837575867777897775语文数学英语姓名班级语文数学552222A0011班5522655522A0041班5468.57143489855A0071班9877.46429546998A0101班74.598227269A0131班83.3928674.5557572987775692277725569759872776969807272837575867777897775cells(num,l).Resize(1,5)=range.EntireRow.range(f1:j1).ValueA001A004A007A010A013法一end结束就不循环法二exitfor代替end同时else与endif都要有用doloop可以在下面增加的情况下继续执行,相当于动态执行,关键在于cells(num,e)=这个命令。当然另外连个也可以,自己试试英语229874.571.5357174.5英语229874.571.5357174.5A0011班552222A0041班5468.5714398A0071班9877.4642974.5A0101班74.59871.53571A0131班83.3928674.574.5
本文标题:笔记VBA
链接地址:https://www.777doc.com/doc-1851597 .html