《基于Excel VBA的财务自动化》配套习题答案.docx
第1章VBA入门知识I.动手练习:关闭所有已打开的Excel程序,然后新建并打开一个CXCCl文件,在该文件的B3:M5区域内填入任意数字。在该文件内录制宏,宏的名字为“format"。录制以卜操作:< 1)地置Al:Ml为合并并居中,行高3().内容垂宜居中,字号20,< 2)设置A2:M2填充色为淡蓝色.< 3)设置B3:M5数字格式为“会计专用。(4)在A6输入“Total:",在第六行,B到M每一列进行求和。< 5)设置A6:M6字体加粗,上边框线为双线。< 6)在输入“GrandToIaI:",在M8对第六行进行求和“< 7)设置第八行字体加粗.< 8)设置所有列,自动适应列宽。请根据表中数据生成折线图,并将操作过程用宏录制下来。2.请根据表中数据生成折现图,并将操作过程用宏录制下来.SubMacrol0Range(*B1:C13*).SelectCharts.AddActiveChart.ChartType=Xl1.ineMarkersActiveChart.SetSourceDataSource:=Shects(*Shcet1*).Rane(*Bl:C13*)»PlotByJ=XlColumnsctiveChart.Ix)cationWhere:=xll.ocatiOnAsObject,Nane:=*Shee11”WithAciivcCharl.Axes(xlCalcory).HasMajorGridlines=False.IIasMinorGridlines二FalseEndWithWithActiveChart.Axes(x1Value).IIasMajorGridlines:False.IIasMinorGridlines=FalseEndWith第2章程序设计的基本知识1 .什么是IDE,其功能是什么?什么是VBE,其功能是什么?编程语言自1.I的集成开发环境叫IDE(IntegratedDevelopmentEnVirOnment),它为用户提供代码编写环境、分析功能、调试功能,比如语法高亮、语句自动补全、参考资料等。VBE是excelVBA的集成开发环境,为用户提供代码编写环境、分析功能、调试功能,也可以符VBE理解为EXCd中VBA代码的编译器。2 .什么是工程资源管理器?其中包含哪些内容?默认情况卜.,一个excel文件的工程资源管理器中包含哪些对象?工程资源管理器是存放对象的容器,包含/当前在EXCel中打开的所有EKCel对象,包含工作表,模块,窗体,加载宏及隐藏的工作薄,每个工作薄被认为是一个工程。默认情况下只有MicrosoftExcel对象,其中又包含了一个工作簿对象(ThiSWorkbook)和若干工作表对象(如SheetRSheet2,Sheel3等)。3.VBA有哪些基本的数值型数据类型?共基本特点是什么?国本数据类型关雄字存储空间用途数值型整型Integer2字节存放整数.冠国-32768-32767长整型1.ong4字节存放整数,范因-2147483648-2147483647学精度浮点型Single4字节存放实数,范第3402823E383.W2823E38双精度浮点型Double8字节存放实数,范阳-1.79769313486232E301.79769313486232E3O8货币型Currency8字节存放财芬数据.范国922337203685477.5808-922337203685477.58074.请设计一个VBA程序,由用户输入一个数字后,判断该数是否能被2、3、5其中之整除,并将判断结果用弹出对话框告诉用户。Subtest3()s=InPUtBOXe请输入一个整数:”)IfsMod2=0ThenWs8Box.输入的效能被2整除!”ElsoIfsMod3=0ThenHsrBox”输入的效能被3整除!”ElselfSMod5=0IhenHsgBox"给入的数能被5整除!”ElseJkgBox'输入的数不能被2、3,5其中之一整除!*EndIfEndSub5.分别用FOr循环和D。循环编写一个VBA程序,计算1.lOO的自然数之和,For循环:Submysum()Dim1.sunAs1.ong,is1.ongFori=1To1001.sun=1.sum+iNextMsgBox,110A×0t>>6yoff£0*&1.sumEndSubDo循环:Submysum2()Dim1.suas1.ong,iAs1.ongDoUhilei<IOl1.sub=1.SUm+ii=i+11.oopMsgBox*l100A×06wylP,*&1.sumEndSub第3章ExcelVBA的重要概念1.Excd中有哪些常见的对象?它们之间的层次结构是怎样的?有APPIiCaIion对象、WOrkbOok对象、Worksheet对象、Range对象。EXCCl应用程序只有个APPIiCatiOn对象,个APPliCatiOn对象中可能有多个工作簿对象,工作簿中可能包含多个工作表对以,而工作表中又包含着多个单元格对象.2.基于对象集合的概念,可以对workbook和WOrkShCet对象采用两种基本的表示方法,试举例说明。<1)对象集合("对象名"),如WorkSheetSCSheeII")表示所有工作表中名为Sheetl的那张工作表:<2)对象集合(对象索引号)。如WOrkShCCM2)表示排在第2位的那张工作表。3 .对象变量与其他变量在使用上有什么不同?<1)时象变量在赋值之前,必须先声明,如DimmgaSRange:(1)给对象变量赋值.必须加Sel关键字,如Setmg=Range("Al:C2"):(3)程序结束前,最好用语句“Sei对象变量名=Nothing”手动择放对象变量内存空间。4 .简述对象的属性、方法、事件。属性是对象的一种特征,每个对象都可能有多个属性。在VBA代码中般通过赋值语句的方式来设置对型的属性值,对您和属性之间同样用英文符号连接,对象在前,属性在后.方法是作用于对象的悚作,每个对象都可能有多个方法。如果说属性由于是对象的特征,因而是名词形式的话,那么方法就可看作是动词形式,例如创建、删除、关闭、插入、激活、计算、身制、查找等。对象和方法之间也用英文句点连接。对象的事件是当一定主体对象的特定事件发生后,就会触发宏过程的自动启动运行。VBA可以响应许多事件,而这些事件又是由用户或者系统本身所触发的。对于对象而言,事件就是发生在该对象上的事情或消息。系统为每个对象预先定义好了一系列的事件,例如,CIiCk(单击)、DbICliCk(双击)等.第4章VB操作主要对象1 .什么是Application对象?Application对象的worksheets和Sheets属性有什么区别?ActivcWorkbook和thisvorkbook属性有什么区别?在Excel对象模型层次结构最顶端的是APPliCaliOn对彖,代表Excel应用程序本身。WOrkSheelS是活动工作簿中所有WCrkSheel对象,不包括宏表等:Sheet5当前活动工作薄中所有ShCCl对象,包括宏表等,二者可能一样,也可能不一样。ActivcWorkbook是当前活动工作簿,Ihisworkbook是运行当前宏代码的工作簿,二者可能一样,也可能不一样。2 .请用Yba代码表示以下描述:(I)关闭名为“测试”的工作簿< 2)保存代码所在的工作簿< 3)选择标签名称名为“1月''的工作表< 4)删除第2张工作表< 5)新建一张工作表,放在最后位置答:.orkbooks("测试").CloseThisWorkbook.Saveworksheets("1月").selectforksheets(2).DeleteIorksheets.Addafter:=Iorksheets(Worksheets,count)3 .请用2种或以上的方法引用:(I)单元格Al:< 2)单元格区域Al:C3;< 3)第2行:< 4)第2列<1)ra11e(“al”),cells(1,1)(2) range(*'1:C3").range(*'al").resize(3,3)(3) Rows2:2*).Rows(2)<4)Cbluens("B:B),Columns(2)4 .试写个SUb过程,将当前工作薄中的所有工作表名称写入第一张表的A列。Subtest()DimwsAsWorksheetColuinns(I),ClearRangeA)="工作表名称"ForEachwsInWorksheetsCelIs(Rows.Count,1).End(xl1.p).Offset(I).Value=ws.NameNextSetws=NothingEndSub5 .某工作表数据如下图所示,试编制Vba代码,分别实现D5单元格数据与A列数据的加、减、乘、除运算。/;AlBCWl1 152 23 34 45 .5PublicSubtest()DimInyRanRCIASRangeDimInyRange2AsRangeSetmyRangel=Range(*1:A7*)'指定的单元格区域RangeCDl),Value=5'指定要进行运算的值SetmyRange2=Range(*I)'指定运Wttt的弟元格myRange2.CopyMsgBox”下面将进行加法计算”myRangel.PasteSpecialOperation:=xIPasteSpecialOperationAddMSRBOK”下面将进行减法计算.inyRangel.PasteSpecialOperation:=x1PasteSpecialOperatiOnSubtractMsgBox”下面将进行乘法计JrInyRanRe1.PasleSpocialOperation:=x1PasteSpcciaIOperalionMuItiplyMsgBox”下面将进行除法计算”myRangel.PasteSpecialOperationr-XlPasteSpecia1OperationDivideSetrnyRangel=NothingSetm>,Range2=NothingEndSub第5章函数1 .在Vba中,如何调用工作表函数?如何调用VBA内巴函数?工作表函数主要通过两种方式谢用:第一种为利用APPliCation对象调用,使用特点是在函数名前加“WorksheetFunction”的前缀:第二种为利用字符吊直接在单元格中写入函数。调用VBA内置函数可以在前面加上:VBA.函数名,也或者直接调用写函数名.2 .什么是自定义函数?自定义函数的基本格式是怎样的?VBA用户可以自行定义一个具有特殊功能的函数,即自定义函数,其基本格式如卜;Function南数名(变量)Endfunction3 .与Excel内置函数相比,自定义函数的使用中有什么主要问题?可以采用什么方法予以解决?自定义函数值不能自动更新,这一点与Excel内置函数不同.解决自定义函数自动更新的方法主要有两种:一是在工作表中选择任何两列进行剪切和粘贴操作,二是在函数体内第行加上语句"ApplicalionNoIaliIe''将函数定义为易失性函数。4 .试写个自定义函数,如果输入参数是“男”,则返回“先生”:如果输入参数是“女”,则返回"女士”,FunctionchstrAsString)Ifstr="男"Thench="先生.Elsech女士"EndIfEndFunction5 .试写个自定义函数,将“4202031988()8089201”格式的身份证号码中的生日信息提取出来,并以“1988/8/8”的格式返回.Functionrqzh(strAsString)rqzh-DateSerial(1.eft(str,4),Mid(str,5,2).Right(str,2)EndFunction第6章对账业务1 .在银企对账宏中是如何实现A列与C列数据比对的?第一步,将第1列(A列)的第1个数据,即单元格CeHS(3,I)数据,与第3列(C列)第1个数据,即单元格CeHS(3,3)数据,进行比对。如果相同,即Celk(3.1)=CeIk(3.3),则停止比对,并同时删去单元格Cell(3,l)Cell(3,3)数据.第二步,如果第一步比对不成功,也就是单元格CdIS(3,1)与CCllS(3.3)的数据不同,即接若将第1列的第1个数据顺次与第3列第2个数据,即单元格CeHS(4.3)数据,进行比对。如果相同,则停Ih比对,并同时删去单元格CeHM3.1)和CeHS(4,3)数据。如此进行,直到将第I列的第1个数据与第3列的最后I个数据,即单元格CeH(100oo,3)数据,比对完毕。2 .为什么在记录之间存在空格时,For.Ncxt循环语句的循环终值不能设为变量值?如果记录之间有空格,则循环会在第个空格处终止。3 .6.2.1小节VBA代码中的"ar=Range("al").CUITentRCgion”可以替换为“akRange(一).USCdRangC”么?不可以,因为UscdRangc是Worksheet对象的属性,range对象没有。4 .若本章6.2.1小节VBA代码中必须使用USedRange属性,应该怎么修改?改了仃缺点?将“ar=RangeeaI").CUrrentRegion”替换为"ar=Sheet1.UsedRange"KP11缺点:由于USCdRangC底性返回的是工作表中已使用的所有单元格困成的最小矩形区城,所以当工作表中数据区域以外的堆元格有改动,数组ar中就会出现一些空值,浪费了内存空间。第7章统计报表的批量生成与分发1 .按顺序删除工作表时,为什么要从后往前删除?删除一张工作表之后,所有的ShCCt在顺序上都依次前移了一位,若按顺序从前往后粗除,会造成漏删,并可能引起“下标越界”的问题。2 .简述对报表设理保护的操作步骤.< 1)先锁定整张工作表的单元格。< 2)取消锁定要输入数据的单元格或区域。< 3)单击“审阅”选项卡,然后单击“保护工作表”选项,显示出对话框并在其中输入密码,然后单击“确定”按钮.3 .统计报表批量生成后,为方便使用,可建立一个Fl录页,将文件中所有表名按顺序列示在目录页中,并建立超链接。试用VBA代码实现这一过程。Sub11kdir(),为工作簿中所有工作表建立目录Rows(*2:65536*).ClearContentsDimShtAsVarianttirowAsIntegerirow=1ForEachshtInSheets'遍历工作表Cells(irowt*A*),Value=irow-1'写入序号,写入工作表名,并建立超链接ActiveSheet.Ilyperlinks.AddAnchorzCel1s(irow.*B*),Address:-*._SubAddress:="'"&sht.Name&''!Al",TextToDisplayj=Sht.Nameiro>=irow÷1'行号加1NextEndSub第8章日记账数据拆分到多表1 .在自动化业务处理中,如何在代码中根据对缴处理的不同状态选择不同的进一步处理方式?引入个状态变量,根据对象处理的不同状态给状态变量赋不同的值,进而利用if语句根据状态变量值的不同进入不同的代码块.2 .在拆分数据到部门表的时候,如果代码中不指明工作表名称,会发生什么情况?请选择不同的工作表进行测试。无论在哪张工作表界面启动运行SUb过程,都无法得到正确的拆分数据结果,原因是SUb过程运行中会在不同的工作表间切换,若不指明工作表名称,就无法指向正确的工作表数据.3 .试编写一个Sub过程,将拆分到不同工作表的数据提取合并到一个表格中。Subhcbi11()Dimi,jAsInteger'i是数据源我的最后一行,j是目标表(数据衣)的最后行DimshtAsWorksheet'先要删除所有数据Sheet1.Range(*al:f65536*).ClOarContents'发制表头Sheet2.Range(*»:8*).CopySheetl.Range("al")'Sl制数据ForEachShlInSheetsIfsht.NaaeO"数据"Then1 =sht.RangeC*a65536*).End(xlip).Rowj=Sheetl.RangeCa65536*r).End(xlUp).Rowsht.Range(*a2:f*hi).CopySheet1.Range(*a*&j*1)EndIfNextEndSub第9章跨文件汇总报表I、请简述Dir函数的作用及使用特点.Dir的作用是返回一个String,用以表示一个文件名、目录名或文件夹名称,它必须与指定的模式或文件属性、或磁盘卷标相匹配。Dir(PathnanIe)仅返回匹配pathname的第个文件名,若想得到匹配PaIhnaEe的其它文件名,再一次调用Dir,且不敷使用参数.如果已没有合乎条件的文件,则Dir会返回一个零长度字符串("")。一旦返回值为零长度字符串,并要再次谢用Dir时,就必须指定Pathnamc,否则会产生.错误。2 .请使用Dir函数号一个SUb过程,用以判断与代码文件所在的文件夹中,有没有名为"tesi”的excle文件.PublicSbfiIeNaneTestODimmyFileNamesString'指定带完整目录的文件夹名称UyFileName=ThisWorkbook.Path&*test.xls*If1.en(DirQyFiIeNamc,vbDirectory)>0ThenJfDir(yFiIeName)O""ThenMsgBox.该文件存在.ElseMsgBox”该文件不存在“EndIfElseMsgllox”所指定的文件夹或文件不存在EndIfEndSub3 .在路径下有三个excel文件,名称分别为company1company!%company?,文件内的数据格式均如下图左所示。图右是在另i路径下的汇总文件。现需在不打开company1xComPany2、COmPany3文件的情况卜,在汇总文件中得到统计数据,试写一个SUb过程实现这要求。iB&aW金融1万元)Z»£a203AAB154R&CJ公旬QqAalt收入(万元<mc*v25Sub子公司普业合计()FOri=IT03Sheets(ActiveSheet.Name).Ce11s(4i,2).FormulaRlCl-"='D:1'company"Aii".xlsShcetl,!Rf&(-2-i)&C-Nexti'以上3行代码,循环调用D盘T文件夹COmPany1、ComPany2、coany3文件Sheetl工作表B2单元格中的数据,并从节前工作表B5单元格开始向下依次列出.EndSub4 .试写一个SUb过程,可以在代码所在文件中,将指定文件夹中所有excel文件(数量不确定的所有工作表(数量不确定)的前20行前10列的数据,分别求和放入代码所在文件的对应单元格中。SubtestDimcFile$.Cpalh$,ShAsWorksheet,nRowSetSh=ActiveShcctDim三ydirAsStringApplication.ScreenUpdating-FalseApplication.EnableEvents=FalseFori=1To20*行范围ForJ=1To10,列范困Sh.Cells(i,j)="NextjNextiePath=ThisWorkbook.Path&"数据源'cFile二Dir(cPathixls*)'找寻第一个表格DoWhilecFileOr'开始循环,Workbooks.OpenePathhcFile'打开表格WithctiVeWorkbookSetwk=ActiveWorkbook.SheetsFori-1To20Forj=ITo10Fork=iTowk.CountSh.Cells(itj)Val(Sh.Cells(i.j)Val(.Sheets(k).Cells(i.j)NextkNextjNexti.CloseEndWithcFile=Dir'查找F一个表格1.oopApplication.EnableEvents-TrueAppliction.Screcnlpdati11=TrueMsgBox提取汇总完毕!",60K<Mly,菜鸟制作.EndSub5 .试写一个Sub过程,把指定文件夹下所有EXCd文件的数据记录全部汇总到代码所在文件中。Subtest()DimmyPathS,myFile$.AKAsKerkbOok,aRo,¼.tRow¾Application.ScreentIpdatine=FalsemyPath=ThisWorkbook.Path&分表V'冻结算幕,以防屏幕抖动把文件路径定义给变队myFiIe=Dir(myPath&*.xls,)DoWhilemyFiIeO”If三yFileOThisWorkbook.NameThen'依次找J指定路径中的*XlS文件'当指定路径中有文件时进行循环SetAK=Workbooks.Open(myPath&myFile)打开符合要求的文件nRow=AK.Sheets(I).Range("a65536,).End(xlUp).RowlRow=ThisWorkbook.Sheets(I).RangeC,a65536).End(xlUp).Row-1AK.Sheots(I).Range(a3zk*&aRow).CopyThisUorkbook.Sheets(I).Range(*a*ktKow)Iorkbooks(yFi1e),CloseFalseEndIfmyFi1e-Dir1.oop'关Hi源工作簿,并不作修改'我寻下一个*.x】s文件Application.ScreenUpdating-TneMsgBox化总完成,WffYi-!",61,"提示.'冻结屏够此类语句般成对使用第10章数组及其财务应用1 .以下语句是不是合法的数组声明?如果是,声明的数组有些什么特点?DimCitieS(3To6)AsInteger是。上面的语句声明了一个带有四个整数型成员的一维数组.数组名称后面括号里的数字明确了数组的下界(3)和上界(6)。该数组的第个成员编号为3,第二个为%第三个为5,以及笫四个为6.2 .对数组赋值有哪些方式?试举例说明.(D对其元素赋值,如:Arrt1)=3;A(3)=8<2)用循环的方式赋值,如:Fori=1to5Arr(i)=iNeXt(3)用Range对象给数组赋值,如:arr=Range("al:a2")3 .请说明以下语句声明r什么维度的数组,具有什么特点?(1) dimarr(5):表示声明一个具有6个元素一维横向数组,其数据类型是变体变量variant;<2)dimarr(4)asbyte:表示声明个具仃5个元素的横向数组,其数据类型为byte;(3) dimarr(lto3)asSlring:表示声明一个具有3个元素的一维横向数组,数据类型是SIring.其第一个元素索引号为1:<4)dimarr(3.2)asString:表示声明一个四行三列的二维数组,数据类型是String.默认第一元素索引值为0:(5)dima-to3,11。2)asstring:表示声明一个三行二列的二维数组,数据类型是Slring,第一维的卜.标从1到3,第二维的卜.标从I到2。4.试编制程序用数用实现:在卜图shcct2的Bl单元格输入关键字后,可在Shcctl的A列搜索含关键字的行记录,并将所有搜索到的行记录写入Sheel2第3行起的位置.SubIeStoCXgjZ=bl曲=alO'18576j.End(3).Rowar=Sheetsl.aI.CurrentRegionReDimbr(lToUBound(ar),1To5)Fori=2ToUBound(ar)IflnStr(ar(i,1),cxgjz)>0Then11=11+1For1=1To5br(n,1)=ar(i,1)Next1EndIfNextiRange(c3.Cells(mh,5).C1eara3.Resize(n,a3.Resize(n,a3.Resize(n.a3.Resize(n,l*ndSub5)=br5).Rowlleight=205).HorizontalAlignment=xlCenter5).Borders.1.ineStyle=x!Continuous5.谙使用数组写一个SUb过程,计算每一行的平均值并将其填入G列对应的单元格。/ABCDEFGA客户BN户CX户DX户E客户P客户平均依2491625然3281832SO724312274875108541636641001446S2045啦12S180762454%ISO21687286311217S2S2983272)28200288109368114422S324PublicSubtestODimmyArrayAsVariantDimislx>ng.js1.ong.yvg'将中.元格区域数据保存到数组myArray=Range(*A2:F10*).Va1ueReDimm>avg(lToUBound(ayrry)sSingle'计算平均值,并保存到一个维数组中Fori=1.BoundGnyArray)To1.Bound(myArray)yAvg(i)=Round(WorksheelFunction.Average(myArray(i.1),m)rray(il2),myArray(i,3),myArray(i,1),myArray(i.5),myArray(i,6),2)NextiRangeG)="平均值'将计算出的平均值输入到单元区域Range(*G2:G10*)=UorksheetFunction.Transpose(myAvg)EnclSub第11章发票凑数1 .在发票凑数时,为什么要先将数据读取到数组中?因为我们要通过For循环将发票所有排列组合罗列出来,需要对数据进行频繁的读取,若直接使用range读取得要访问硬盘,速度较慢,而对数组的读写直接在内存进行,速度很快.2 .在发票凑数时,使用多层嵌套For循环有什么缺点?首先,FOr循环结构是固定的,For循环有几层则总金额必须由几张发票组成,不能将总金额的所有发票组合形式都找出来。其次,组合结果中张发票的金额会被多次使用,且发票金额所在位置不同,程序都将其视为不同组合,与实际情况不符。3 .在一个过程中调用另一过程,使用什么关键字?Call关篌字4 .什么是递归?递归过程的两个必要条件是什么?递归就是程序在运行的过程中自己调用自己.条件I:必须给出递归终止的条件与结果。条件2:必须给出递归的表述形式。5 .试编制VBA代码用递以求第n个斐波那契数,斐波那契数列为F(O)=OjF(I)=I,F(n)=F(11-I)+E(n-2)n>2o'求第n个斐波那契数,SubFibo(nASInteger)'过程的返回价为第n个斐波那契数If11-0ThenFibo=0ElseIfn=1ThenFibo二1Else:Fibo=Fibo(n-1)+FibO(n-2)EndIfEndSub第12章字典及其财务应用1 .VBA中字典有哪些方法?哪些属性?方法语法作用AddObjeCI.Add(key,item)向DiCtiCnary对象中添加一个关堆字J目对:如果要添加的key已经存在,那么将导致报错Keysobject.Keys返回一个包含Dictionaiy对象全部关键字的一维数加,卜限为0.±限为DiCtiOnary对象的条目数-1Itemsobjcc<.ltcms返【"1一个-维数组,其中包含DiCtiOnary对象的所有项目ExistsObjeC1.EKi$1Wkey)如果DiClicnary对象中仃该key则返【可Hue.看则返3IHscRemoveobj<x(.Rcrnovdkey)从DiCIionary对象中消除,个已有的关键字项目对,注邀如果指定的关键字项目对不存在,那么将导致报错RcmovcAIIObjcc1.RcmovcAII清除DicUonary对&所有的关雄学项目对.即将字典清空M性语法作用countObjectCouni返l>l-个Diciionary时象中的条目数,Keyobject.Key(ikey)=newkey设置一个key,其中卷数ikey是被改变的key值,NeWkCy是用以背换的新值.如果在改变一个key时没有发现该key,那么将创建一个新的key并且其相关联的item被设置为空Itemobjcxt.Ilem(key)(=newiicm)设置或者返回Dictionary对象指定key的ilemoCompareModeobjcct.CompareModc-compare设置或者返回在Dictionaiy对象中进行字符串关迸字比较时所使用的比较模式.compare就是一个代表比较模式,可以使用的例是0(二进制)、1(文本)、2(数据摩)。2 .字典的Keys方法和items方法返回的数据具有什么特点?Keys方法和items方法都可返回一个卜界为O的一维数组。3,请用字典编写个SUb过程,以对话框的形式顺序显示I-I(X1.Subtest()DimdieAsObject,iAs1.ongSetdie=CreateObjectCpScripting.Dictionary*)FOri二1To100die.Addi,iNextMsgBoxJoin(dic.keys,Setdie=NothingEndSub4 .试用字典编写一个SUb过程,在工作表的A列畋序显示1100OO,在B列以逆序显示。SubIcslODimdieAsObject,iAsl.ong,arrSetdie=CreateObject(*Scripting.Dictionary*)Fori=1To10000die.Addi,10001-iNextarr=WorksheetFunction.Transposetdic.keys)al.Resize(1.Bound(arr),1)=arrarr=WorkshcetEunction.Transpose(die.items)bl.Resize(1.Bound(arr),1)=arrSetdie二NothingEndSub5 .试用字典统计圆周率前500位中各数字出现的缴率并显示在工作表的前两行。Subtest()ConstPiAsString="3.14159265358979323846264338327950288419716939937510582097494459230781640628620899862803182534211706798214808651328230664709384460955058223172535940812848111745028410270193852H05559641622948954930381964128810975665933446!28475648233786783165271201909145648566923460348610454326648213393607260249141273724587006606315588174881520920962829254091715364367892590360011330530518820166521384M695194151160913305727036575959195309218611738193261179310511854807446237996274956735188575272489122793818301194912”DiniAs1.ong,tempAsString,dieAsObjectSetdie=CreateObject<"scripting.dictionary*)Fori=3To1.en(pi)temp=Mid(pi,i,1)IfNotdie.exists(te三p)Thendie.Addtemp,1Elsedie(temp)=dic(te11p)+1EndIfNextal:a2=WorksheetFunction.Transpose(Arra),(,.umlwr*,"出现次数")bl.Resized,die.Count)=die.keys1>2.Resized,die.Count)=die.itesSetdie-NothingEndSub第13章窗体与控件1 .窗体的常用属性有哪些?Caption属性和名称属性有什么区别?窗体的常用属性有Caption属性、1.cft属性、Top属性、Height属性、Width属性、EnabIed属性。CaPIiOn属性用于设置窗口的标题,名称属性用于设置对象的名字,名字作为对象的标识而被引用.2 .若窗体Frml中有一个命令按钮CmdI,则窗体和命令按钮的Click事件名称为什么?窗体的Click事件名称为Frm1.Click()命令按钮的