excelexcel序号怎么自动排序实现输入一个字符后显示另一个工作簿一整列包含该字符的内容以供选择录入?

2022年河南省许昌市统招专升本计算机自考真题(含答案)学校:________班级:________姓名:________考号:________一、单选题(50题)1.数据库系统包括()A.数据库语言,数据库B.数据库,数据库应用系统C.数据管理系统,数据库D.硬件系统、系统软件、数据库应用系统、各类人员2.CPU通过数据总线一次存取、加工和传送的数据称为()A.bitB.ByteC.WordD.KB3.Excel单元格C7的值等于B5的值加上B6的值,在单元格C7中应输入公式()A.=E5+E6B.=E5:E6C.E5+E6D.以上都不对4.下列关于多媒体计算机的描述中,正确的是()A.多媒体计算机的体系结构与传统的计算机不同B.多媒体计算机可以输入、处理并输出语音与图像C.多媒体计算机的输入设备与普通计算机相同D.多媒体计算机的CPU与普通计算机不同5.在使用Word过程中,可随时按键盘上的________键以获得联机帮助()A.B.C.D.6.100M以下的局域网传输介质一般采用_______()A.光纤B.电话线C.同轴电缆或双绞线D.普通电线7.下列说法中,正确的是()A.同一个汉字的输入码的长度随输入方法的不同而不同B.一个汉字的机内码与它的国标码是相同的,且均为2字节一个汉字的机内码与它的国标码是相同的,且均为2字节C.不同汉字的机内码的长度是不相同的D.同一汉字用不同的输入法输入时,其机内码是不相同的8.不能关闭Word2010窗口的是()A.双击标题栏左边的B.单击标题栏右边的C.单击文件选项卡中的关闭D.单击文件选项卡中的退出9.机器语言中的每个语句(称为指令)都是()的指令代码A.十进制形式B.八进制形式C.十六进制形式D.二进制形式10.在Windows7中,新建文件夹的错误操作是()A.在D盘窗口中,单击文件菜单下新建子菜单中的文件夹命令B.桌面任意空白处右击,选择快捷菜单中的新建子菜单中的文件夹命令C.在Word2010程序窗口中,单击文件选项卡中的新建命令D.在某文件夹窗口中,单击文件菜单下新建子菜单中的文件夹命令11.可以对幻灯片进行移动、删除、添加、复制操作,但不能编辑幻灯片中具体内容的视图是()A.幻灯片视图B.大纲视图C.幻灯片放映视图D.幻灯片浏览视图12.下列SQL语句正确的是()A.SELECT*FROMxsdaB.SELECT*toxsdaC.SELECT*atxsdaD.SE'LECTxsdafrom*13.用高级程序设计语言编写的程序称为源程序,它()A.只能在专门的机器上运行B.无须编译或解释,可直接在机器上运行C.可读性不好D.具有良好的可读性和可移植性14.在Word2010的段落对话框中,不能设置的是()A.行间距B.段前间距C.左侧缩进D.字符间距15.关于信息和数据,下列说法错误的是()A.信息能够消除事物的不确定性B.信息是自然界、人类社会和人类思维活动中普遍存在的一切物质和事物的属性C.数据是指存储在某种媒体上的可以鉴别的符号资料D.在信息科学中,信息是数据的具体表现形式,是数据的载体16.Windows7中,按下鼠标右键,在同一驱动器的不同文件夹内拖动对象,不可能发生的结果是()A.移动该对象B.复制该对象C.删除该对象D.在目标文件夹创建快捷方式17.为了把工作站或服务器等智能设备连入一个网络中,需要一块称为()的网络接口设备A.网桥B.网关C.网卡D.网间连接器18.要在Web浏览器上显示加粗的文字供给侧改革,其HTML语句表示是()A.<A>供给侧改革</A>B.<B>供给侧改革</B>C.<C>供给侧改革</C>D.<D>供给侧改革</D>19.计算机的主频是指()A.硬盘的读写速度B.显示器的刷新速度C.CPU的时钟频率D.内存的读写速度20.第一代电子计算机采用的电子元器件是()A.晶体管B.电子管C.集成电路D.大规模集成电路21.PowerPoint2010中,在幻灯片中插入声音元素,幻灯片播放时()A.用鼠标单击声音图标,才能开始播放B.只能在有声音图标的幻灯片中播放,不能跨幻灯片连续播放C.只能连续播放声音,中途不能停止D.可以按需要灵活设置声音元素的播放22.在Excel2010中,工作簿指的是()A.当前的操作区域B.一种记录方式C.整个Excel2010文档D.当前的整个工作表23.当我们搜索文件或文件夹时,如果输入A*.*,表示()A.搜索所有文件或文件夹B.搜索扩展名为A的所有文件或文件夹C.搜索主名为A的所有文件或文件夹D.搜索文件名第一个字符为A的所有文件或文件夹24.基于()的数据库管理系统用一组规范化的二维表来表示实体及实体间的联系A.关系模型B.层次模型C.网状模型D.面向对象模型25.下列有关幻灯片和演示文稿的说法不正确的是()A.一个演示文稿文件可以不包含任何幻灯片B.幻灯片是PowerPoint中包含有文字、图形、图表、声音等多媒体信息的图片C.幻灯片可以单独以文件的形式存盘D.一个演示文稿文件可以包含一张或多张幻灯片26.与十进制数254等值的二进制数是()A.11111110B.11101111C.11111011D.1110111027.下列关于计算机程序的叙述,正确的是()A.机器语言程序的执行速度比高级语言程序慢B.机器语言程序的可移值性比高级语言程序强C.机器语言程序的可读性比高级语言程序差D.汇编语言程序和机器语言程序均能被计算机直接执行28.下列关于计算机病毒危害的叙述,错误的是()A.可能对硬件造成损坏B.可能删除系统中一些重要的程序C.可能破坏文件内容,造成磁盘上的数据丢失D.计算机感染病毒后会立即遭到破坏29.防火墙软件一般用在()A.工作站与工作站之间B.服务器与服务器之间C.工作站与服务器之间D.网络与网络之间30.目前PC机主流CPU的时钟频率通常为2~3_________()A.GHzB.KHzC.MHzD.THz31.我国第一个连上因特网的网络是()A.ChinaNetB.CERnetC.CSTnetD.ChinaGBN32.在Word中,进行替换操作,应按的快捷键是()A.Ctrl+AB.Ctrl+FC.Ctrl+HD.Ctrl+G33.与IP地址,子网掩码同网段主机的IP地址是()A.B.C.D.192.168.134.如果在单元格输入数据20091225(不包含),Excel将把它识别为()数据A.文本型B.数值型C.日期时间型D.公式35.在WindowsXP中,下列叙述正确的是()A.文件和文件夹都不可改名B.文件可改名,文件夹不可改名C.文件不可更名,文件夹可改名D.文件和文件夹都可以改名36.Word2010文本编辑中,()实际上应该在文档的编辑、排版和打印等操作之前进行,因为它对许多操作都将产生影响A.页码设定B.打印预览C.字体设置D.页面布局37.在PowerPoint2010中保存文件类型时,如果将演示文稿保存为扩展名为()的文件,在资源管理器中用户双击该文件名就可以直接播放演示文稿A.pptxB.potxC.htmlD.ppsx38.字长是指计算机一次所能处理的(),是衡量计算性能的一个重要指标A.字符个数B.十进制位长度C.二进制位长度D.小数位数39.英文缩写CMI的中文意思是()A.计算机管理教学B.计算机辅助教育C.计算机辅助设计D.计算机辅助测试40.把当前窗口的画面复制到剪贴板上可按()键A.Alt+PrintScreenB.PrintScreenC.Shift+PrintScreenD.Ctrl+PrintScreen41.Windows7的菜单栏中,表明单击此菜单会打开一个对话框的标记是()A.?标记B.…标记C.√标记D.●标记42.在Windows中,打开在桌面上的多个窗口的排列方式()A.由系统自动决定,用户不能调整B.只能平铺排列C.可以平铺排列,也可以层叠排列D.只能层叠排列43.在Excel2010中,所有数据的输入及计算都是通过()A.工作簿完成B.工作表完成C.单元格完成D.窗口完成44.电子邮件带有一个别针,表示该邮件()A.设有优先级B.带有标记C.带有附件D.可以转发45.在PowerPoint的()中,可以精确设置幻灯片的格式A.备注页视图B.幻灯片浏览视图C.普通视图D.黑白视图46.计算机系统中的主存储器是指()A.RAM存储器B.ROM存储器C.内存储器D.外存储器47.Word和Excel中,格式刷按钮有很强排版功能,为多次复制同一格式,选用()A.在文件选项卡的选项命令中定义B.双击格式刷按钮C.单击格式刷按钮D.在开始选项卡中定义48.在Excel的A2单元格中输入数值10,B2单元格中输入公式=IF(A2>20,"A",IF(A2>8,"B","C")),则在B2单元格中显示的是()A.10B.AC.BD.C49.下列地址()是正确的电子邮件地址A.B.www@139.comC.11D.50.Access2010中,假设A、B两表的表结构相同,现要将A表的记录复制到B表中,又不删除B表中的原有记录,可以使用的查询是()A.生成表查询B.删除查询C.更新查询D.追加查询二、多选题(20题)51.以下属于PowerPoint后缀名的有()A.docxB.xlsxC.pptxD.ppsx52.Word2010中,段落设置对话框包括()A.首行缩进B.对齐方式C.分栏D.文字方向53.存储器是计算机中重要的设备,下列关于存储器的叙述中,正确的是()A.存储器分为外部存储器和内部存储器B.用户的数据几乎全部保存在硬盘上,所以硬盘是唯一外部存储器C.RAM是随机存储器,通电时存储器的内容可以保存,断电后就会丢失D.ROM是只读存储器,只能读出原有的内容,正常情况下不能由用户再写入新内容54.在Excel工作表中,A1单元格内容是1,如果在区域A1:A5中生成序列1,3,5,7,9,下面操作正确的有()A.在A2中输入3,选中区域A1:A2后拖曳填充柄至A5B.选中A1单元格后,按Ctrl键拖曳填充柄至A5C.在A2中输入3,选中A2后拖曳填充柄至A5D.选中A1单元格后,使用开始选项卡中的填充/系列命令,然后选中相应选项55.在Excel中,下列单元格引用中,哪几项属于绝对引用()A.A6B.$A6C.$A$6D.$AD$656.下列设备中属于输入设备的是()A.显示器B.绘图仪C.鼠标D.扫描仪57.在Windows7的资源管理器窗口中,如果想一次选定多个分散的文件或文件夹,不正确的操作有()A.按住Ctrl键,用鼠标右键逐个选取B.按住Ctrl键,用鼠标左键逐个选取C.按住Shift键,用鼠标右键逐个选取D.按住Shift键,用鼠标左键逐个选取58.下列()主要体现了计算机在人工智能领域的应用A.地震预测B.办公自动化C.专家系统D.自然语言理解59.Word97中的剪贴板工具可在()移动或复制文本与图形A.文档内B.文档间C.应用程序间D.任意系统中60.在Windows7系统中,下列关于回收站叙说错误的是()A.回收站是硬盘中的一块区域B.回收站的容量是固定的C.从U盘删除的文件不经回收站D.从硬盘上删除的文件一定都经回收站61.在Excel2010中,使用自动数据填充可产生复制效果的是()A.初值为纯数字型数据时,左键拖动填充柄的同时按住Ctrl键B.初值为文字型数据和数字型数据的混合体时,左键拖动填充柄在相应单元格中填充C.初值为文字型数据时,左键拖动填充柄在相应单元格中填充D.初值为日期时间型数据时,左键拖动填充柄的同时按住Ctrl键62.下列外部设备中,属于输入设备的是()A.鼠标B.扫描仪C.显示器D.麦克风63.下列属于计算机安全维护的有()A.设置用户权限B.更新系统补丁C.制造和传播计算机病毒D.清理垃圾文件64.在Access数据库中,数据库对象包括()A.查询B.窗体C.脚本D.引用65.在Excel2010中,点击一个单元格,要删除其中的内容,但要保留此单元格,可以使用哪些操作()A.按DELETE键B.使用清除命令C.使用删除单元格命令D.使用复制命令66.人们通常把()合称为中央处理器A.运算器B.寄存器C.控制器D.主存储器67.下列属于典型的多媒体技术应用的是()A.网上购物B.远程网络会议C.防火墙D.在线观看电视直播68.程序设计过程中必不可少的步骤是()A.编辑源程序B.程序排版C.调试运行D.程序打印69.冯·诺依曼原理的基本思想是()A.存储程序B.程序控制C.科学计算D.人工智能70.向Excel工作表的单元格输入内容后,都必须确认后才被认可,确认的方法有()A.双击单元格B.按EnterC.单击另一单元格D.单击编辑栏的√三、填空题(20题)71.将二进制数101101101.111101转换成十六进制数为____72.在Word2010文档中编辑文本,为了能互换两段不相邻文字的位置,可以使用____和粘贴操作73.分辨率是衡量显示器性能的一个重要指标,它指的是整屏可显示____的多少74.(2)为此他查阅资料,得到全频带声音的频率范围是____75.按照防火墙保护网络使用方法的不同,可将其分为三种类型:网络层防火墙、应用层防火墙和____76.n个二进位表示的无符号整数的范围:是____77.世界首次提出存储程序计算机体系结构的科学家是____78.信息安全指的是在信息传递的过程中,____被破坏、偷窃或丢失的风险性79.在Windows中,在不同驱动器之间拖动某一Word文档,其作用是____________。____80.计算机的算法具有可行性、____、确定性和输入/输出81.计算机通过普通的电话线路拨号上网必须具备的一个设备是____82.按国际通行的规则,在Internet的域名系统中,使用____表示教育机构83.域名采取____结构,其格式可表示为:机器名、网络名、机构名、最高域名84.在Excel2010中,若在A1单元格中输入=58>=57,则显示结果为____85.在Internet上为每台计算机指定的唯一的32位地址称为____86.正常情况下,C类IP地址的子网掩码是____87.在数据库关系运算中,在关系中选择某些属性的操作称为____88.十进制215.25的八进制是____89.操作系统的基本功能包括____、存储管理、设备管理和文件管理90.操作系统目前大致分为批处理操作系统、分时操作系统、实时操作系统、____四、简答题(10题)91.磁盘管理器是Windows系统的重要功能之一,请列举至少三种Windows系统提供的磁盘管理工具,并简述他们的功能92.简述选定全部文件或文件夹的方法93.数据库系统的主要功能有哪些?94.在Excel2010中,图表的组成部分包括哪些内容?95.如何在Word2010中插入页码和日期?96.简述计算机病毒的特点97.计算机数据管理技术经历了哪几个阶段?98.请问冯·诺依曼计算机的特点是什么?99.光纤作为传输媒体有哪些优缺点?100.简述计算机的特点五、设计阅读题(10题)101.已知窗体某主菜单上有2个子菜单项,鼠标单击第2项菜单后请写出程序运行的结果。文本框初始内容为空()'a1、2顺序为2个子菜单名PrivateSuba1_Click()DimiAsIntegerFori=1To5Text1.Text=Text1.Text+Str(i)NextiEndSubPrivateSuba2_Click()DimiAsIntegerFori=1To5Text1.Text=Text1.Text+Chr(i+64)NextiEndSubPrivateSubText1_Change()PrintText1.TextEndSub102.写出程序运行时,在组合框中的所有表项()PrivateSubForm_Load()Combo1.AddItem"曲棍球":Combo1.list(0)="篮球"Combo1.AddItem"足球":Combo1.AddItem"网球"Combo1.AddItem"排球",0Combo1.AddItem"羽毛球",1EndSub103.写出下列程序运行时窗体上显示内容()PrivateSubForm_Activate()DimSAsString,aAsString,bAsStringa="*":b="$"Fori=1To4Ifi/2=Int(i/2)ThenS=String(Len(a)+i,b)ElseS=String(Len(a)+i,a)EndIfPrintS;NextiEndSub104.有一程序如下,则程序运行结果为()CLEARDIMENSIONA(3,3)FORI=1TO3FORJ=1TO3IFI<>JA(I,J)=0ELSEA(I,J)=9ENDIFA(I,J)ENDFOR?ENDFORCANCEL105.写出下列程序运行时,在InputBox框中输入123456,窗体上的显示内容()PrivateSubForm_Click()DimaAsLong,bAsLonga=InputBox("请输入若干个整数")CallP(a,b)PrintbEndSubPrivateSubP(xAsLong,yAsLong)DimnAsInteger,jAsString*1,sAsStringDimaAsStringk=Len(Trim(Str(x)))s=aFori=kTo1Step-1j=Mid(x,i,1)s=s+jNextiy=Val(s)EndSub106.写出下列程序运行时,单击命令按钮后,输入n为7,窗体上的显示结果()PrivateSubCommand1_Click()DimnAsLongn=Val(InputBox("请输入一个数据"))Ifpd(n)Thenn=n-1Elsen=n+1EndIfPrintnEndSubPrivateFunctionpd(ByValIAsLong)AsBooleanIfIMod2=0Thenpd=TrueElsepd=FalseEndIfEndFunction107.下列程序的运行结果为()dimew1(5)x="a"w1=""fori=5to1step-1forj=1toiw1(i)=w1(i)+xendforx=chr(asc(x)+1)?=6-i,w1(i)endfor108.假定今天是2015年4月11日,则程序的输出结果是()yue=month(date())DOcaseCaseyue=3oryue=4oryue=8Coth="春"Caseyue=6oryue=7oryue=8Coth="夏"Caseyue=9oryue=10oryue=11Coth="秋"Caseyue=12oryue=1oryue=2Coth="冬"Endcase?Cothreturn109.已知窗体某主菜单上有三个子菜单项,当鼠标点击菜单第二项后请写出程序运行后窗体上的结果()'m1、2、3顺序为3个子菜单名Privatesuba(nasinteger)DimIasinteger,sasintegerS=1Fori=nto1step-1S=i*iPrints;NextiEndsubPrivateSubm1_Click()A1EndSubPrivateSubm2_Click()A2EndSubPrivateSubm3_Click()A3EndSub110.写出下列程序运行时,单击窗体一次后,窗体上显示的结果()DimxAsBytePrivateStaticSubForm_Click()DimyAsByte,zAsByteCallinit(y,z)Callop(x,y,z)Printx;y;zEndSubPrivateSubinit(aAsByte,bAsByte)a=a+1b=b+2x=a+bEndSubPrivateSubop(ByValuAsByte,vAsByte,ByRefwAsByte)u=u+1v=v+uw=u+v+wEndSub六、操作题(2题)111.要将第二张幻灯片的背景纹理设置为“水流”,应在“设置背景格式”对话框选择填充方式为()A@纯色填充B@渐变填充C@图片或纹理填充D@图案填充112.在幻灯片放映时,要将第一张幻灯片前进到第二张幻灯片的出现效果设置为“推进”,能够实现这一效果的功能区在()A@“动画”选项卡B@“设计”选项卡C@“切换”选项卡D@“视图”选项卡参考答案1.DD数据库系统由四部分组成,即硬件系统、系统软件(包括操作系统和数据库管理系统)、数据库应用系统和各类人员2.CC计算机处理数据时,CPU通过数据总线一次存取、加工和传送的数据称为字(Word)3.D由于Excel单元格C7的值等于B5的值加上B6的值,因此单元格C7中应输入公式=B5+B64.B多媒体计算机与一般的计算机并无太大差别,只不过是多了一些软硬件配置而已,因此多媒体计算机的体系结构和CPU与传统的计算机是相同的,AD错;多媒体计算机除了使个人计算机能处理文字和数据之外,还具有处理输入、输出音频信号、视频信号的功能,能得到高品质的声音和图像画面,B对;多媒体计算机的输入设备有摄像机、录像机、数码相机和话筒等,而普通计算机的输入设备包括键盘、鼠标、读卡器等,C错5.B6.C7.A8.C文件选项卡中的关闭指的是关闭文档,并不会关闭Word2010窗口,文件选项卡中的退出指的是退出Word2010软件,关闭Word2010窗口9.D机器语言是最低级的计算机语言,它是直接针对某种类型的计算机硬件来构造的,由二进制符号组成,所以用机器语言编写的程序,计算机硬件可以直接识别10.CC选项C是新建一个Word文档的方法11.D在幻灯片浏览视图下,用户可以复制、删除幻灯片,调整幻灯片的顺序,但不能对个别幻灯片的内容进行编辑、修改12.AASQL的SELECT(查询)语句的基本格式为Select字段名表FROM表名称[Where条件]。*代表所有字段13.D用高级语言编写的程序必须经编译或解释后才能在计算机上运行,但它具有良好的可读性和可移植性。所以本题选D14.D15.D数据是信息的具体表现形式,是信息的载体16.C答案]C【精析】在Windows7中,按下鼠标右键在同一驱动器的不同文件夹内拖动对象,在目标文件夹中会弹出一个快捷菜单,菜单中包含移动到当前位置,复制到当前位置,在当前位置创建快捷方式等选项,可以对该对象进行移动、复制、创建快捷方式等操作,但并不能删除该对象17.C网卡又称网络适配器,是连接计算机等智能设备与网络的硬件设备18.B加粗的标记为<B>,斜体的标记为<I>,下划线的标记为<U>19.C计算机的主频,即CPU的时钟频率,是指计算机CPU在单位时间内发出的脉冲数,很大程度上决定了计算机的运算速度,基本单位是赫兹(Hz)20.BB第一代电子计算机采用的电子元器件是电子管,第二代电子计算机采用的电子元器件是晶体管,第三代电子计算机采用的电子元器件是中、小规模集成电路,第四代电子计算机采用的电子元器件是大规模、超大规模集成电路21.D22.C在Excel2010中,一个Excel2010文档就是一个工作簿,该Excel文档中的所有工作表都包含在工作簿中23.D*表示零个、一个或多个字符,输入A*.*,表示搜索文件名第一个字符为A的所有文件或文件夹24.A25.C26.A解析:十进制向二进制的转换采用“除二取余”法,本题计算过程如下。27.C28.D29.D30.A本题主要考查第二章第二节中CPU的性能指标部分。目前个人计算机和高端智能手机的CPU的主频都在1GHz~4GHz之间。因此本题选A31.C32.C33.B已知IP地址,子网掩码,除去网络地址,广播地址55,与它同网段主机的IP地址是-54,故选B34.B日期和时间型数据的输入有特定的格式要求,如果单纯地输入代表日期或时间的数字,Excel将其视为数值型数据而非日期和时间型数据35.D36.D页面布局下有页边距、纸张、缩进、稿纸设置等选项,包括对页边距,纸张的方向、纸张的大小、左缩进、右缩进、文字排列等的一系列操作,页面设置应该在文档编辑、排版和打印等操作之前进行。页码设置和字体设置是在编辑或排版时进行的操作,打印预览是在打印前进行的操作,并且不会对其他操作造成影响37.DDpptx是PowerPoint2010的默认扩展名,potx是PowerPoint2010的模板文件的扩展名,ppsx是PowerPoint2010的放映文件的扩展名,双击放映文件就可以直接播放演示文稿38.C字:CPU一次存取、加工、和传送的数据称为一个字。该字的二进制位数称为字长。字长是衡量计算机性能的重要指标:字长越长,速度越快,精度越高。常见:8位、16位、32位、64位。字长与CPU的型号有关39.AACMI:计算机管理教学,CAD:计算机辅助设计,CAM:计算机辅助制造,CBE:计算机辅助教育,CAI:计算机辅助教学,CAT:计算机辅助测试,CIMS:计算机集成制造系统40.AWindows可以将屏幕画面复制到剪贴板,要复制整个屏幕,按PrintScreen;要复制活动窗口,按组合键Alt+PrintScreen41.BB?标记明此菜单项目下还有下级菜单。…标记表明单击此菜单会打开一个对话框。√标记表明正处于选中状态。●标记表明该菜单为单选菜单42.C43.CC单元格是处理数据的最小的工作单位。所有数据的输入及计算都是通过单元格完成的44.C电子邮件带有一个别针,表示该邮件带有附件45.C备注页视图是用于给幻灯片添加备注的视图模式;幻灯片浏览视图可以预览幻灯片的整体效果,调整幻灯片顺序,但无法精确设置幻灯片格式;普通视图可以逐张为幻灯片添加文本和剪贴画,并对幻灯片的内容进行编排与格式化46.C内存储器又称为主存储器,外存储器又称为辅助存储器47.B格式刷是格式工具栏上的可用于快速格式化的工具,可以快速将指定段落或文本的格式延用到其他段落或文本上,要多次复制同一格式,双击格式刷即可进行多次操作48.C函数IF(A1,A2,A3)的功能是:如果条件A1为真,则函数返回A2值,否则返回A3值。该题运用了IF函数的嵌套形式,由其功能知,选项C正确49.B50.D追加查询用于将一个或多个表中的记录添加到另一个表的结尾51.CD.pptx和.ppsx是PowerPoint的后缀名;.xlsx是Excel的后缀名;.docx是Word的后缀名52.ABAB分栏和文字方向均在页面布局选项卡下设置53.ACD硬盘并不是唯一的外部存储器,软盘、光盘、U盘等也属于外部存储器54.AD若A1单元格内容为1,如果在想要在A1:A5生成序列1、3、5、7、9,可使用自动填充柄填充,在A2中输入3,选中区域A1:A2后拖曳填充柄至A5;因为该序列是等差序列,等差比为2,也可以先选中单元格A1后,使用开始选项卡的填充/系列命令,将序列选择按行或列填充,步长值为2,终止值为9,选择等差序列,单击确定即可55.CD引用分为绝对引用、相对引用和混合引用。绝对引用是指公式中的单元格或单元格的区域地址不随位置的变化而变化,绝对引用的格式是在单元格的行号和列标前加$,例如$C$4就是绝对引用56.CD计算机的输入设备包括鼠标、键盘、扫描仪、数字化仪、数码摄像机、条形码阅读器、数码相机和A/D转换器等。显示器和绘图仪属于输出设备57.ACD在Windows7的资源管理器窗口中,需要一次选定多个分散的文件或文件夹,正确的操作是按住Ctrl键,再按鼠标左键逐个选取58.CDCD选项A主要体现的是科学计算,选项B主要体现了信息管理。人工智能是研究怎样让计算机做一些通常认为需要智能才能做的事情,又称机器智能。专家系统是一个智能计算机程序系统,其内部含有大量的某个领域专家水平的知识与经验,能够利用人类专家的知识和解决问题的方法来处理该领域问题。自然语言理解是使用自然语言同计算机进行通讯的技术59.ABC60.BD回收站是硬盘中的一块区域,用户可以自行修改大小。从硬盘上删除的文件如果大于回收站容量就不经过回收站61.CDCD初值为数字型数据时,若在拖动填充柄的同时按住Ctrl键,可产生自动增1的数字序列。初值为文字型数据和数字型数据的混合体时,左键拖动填充柄填充时文字不变,数字递增(减)62.ABD各选项中,显示器属于输出设备,其他都是输入设备63.ABAB选项C会危害计算机安全,选项D可以提高计算机系统的速度,不属于计算机安全维护64.ABAccess数据库对象包括表、查询、窗体、报表、宏和模块65.ABAB在Excel2010中,点击一个单元格,若想只删除单元格内容而不删除单元格本身,可以使用DELETE键或使用清除命令。删除命令下的删除单元格命令会将数据连同单元格一起删除,复制按钮可以将选中的单元格内容复制到剪贴板上,单元格的内容及单元格本身并不会发生变化66.ACAC通常把控制器和运算器合称为中央处理器(CPU),它是计算机的核心部件67.BDBD网络购物属于电子商务应用,防火墙是信息安全范畴68.AC69.ABAB冯·诺依曼原理的基本思想是存储程序和程序控制,存储程序是指人们必须事先把计算机的执行步骤序列(即程序)及运行中的数据,通过一定的方式输入并存储在计算机的存储器中;程序控制是指计算机运行时能自动地逐一取出程序中的一条条指令,加以分析并执行规定的操作70.BCD在Excel单元格中输入内容后,双击单元格后会选中单元格中的文本内容,并不能确认内容71.16D.F472.剪切}
在多个工作表中将查找结果返回到同一个表或者窗体,这是VBA的强项。利用VBA可以瞬间完成各种需求的跨表查询,以及对查询的目标进行计算或者格式设置。疑难36 如何引用数据表创建多级下拉菜单数据有效性可以实现下拉菜单,但只能一级。那么可以实现二级菜单吗?例如利用图2-30所示的数据产生图2-31所示的二级菜单,当单击单元格时,产生二级菜单;选择第二级菜单时可以在单元格分别产生部门和姓名,即同时输入一级和二级菜单的字符。█ 图2-30 数据表█ 图2-31 二级菜单 解决方案数据有效性功能无法修改,但可以通过自定义二级菜单的方式来处理。ShowPopup方法可以将二级菜单显示在活动单元格处,从而打造出类似于数据有效性下拉列表的二级菜单。最后利用ActionControl属性获取用户所单击的菜单字符,并导入到单元格中。简单而言,就是利用工作簿事件 SheetSelectionChange,在选择指定的单元格时利用CommandBars.Add创建一级和二级菜单,而当用户选择菜单时,将菜单的文字标题导入到单元格中。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 选择菜单“插入”→“模块”,并输入以下代码:
Sub 选项() '用于指定哪个区域可以产生二级菜单
Dim i As String, adds As String, sht As Worksheet
'确认是否存在“数据”工作表
On Error Resume Next
Set sht = Sheets("数据")
If err.Number <> 0 Then MsgBox "请建立一个名为“数据”的工作表,用于存放菜单
所需要的数据", , "确认数据表": GoTo err
err.Clear
On Error GoTo err
'如果选择的是单元格,那么将选区地址赋予变量adds,否则将“B:B”赋予变量
If TypeName(Selection) = "Range" Then adds = Selection.Address(0, 0) Else
adds = "B:B"
i = Application.InputBox("你想控制哪一个区域" & vbCrLf & "如果想关闭本功能,
单击取消按钮即可。", "请选择区域", adds, , , , , 8).Address(0, 0)
SaveSetting "MyApp", "only", "only", i '将用户选择的单元格地址存入注册表
Exit Sub '退出程序
err:
SaveSetting "MyApp", "only", "only", "" '在注册表中写入一个空字符
End Sub
以上过程用于让用户指定在哪个区域产生二级菜单,可以利用【Ctrl】键多选。而用户选择的区域地址将会存储在注册表中。步骤3 如果VBE编辑器左边没有对象浏览器,那么选择菜单“视图”→“对象浏览器”调出对象浏览器窗口。然后双击“ThisWorkbook”进入代码窗口,并输入以下工作簿级别事件过程代码:
Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target
As Range)
If GetSetting("MyApp", "only", "only", "") = "" Then Exit Sub
'如果注册表中没有值则退出
If Target.Count > 1 Then Exit Sub '如果选择区域则退出
On Error Resume Next
Dim sht As Worksheet
Set sht = Sheets("数据") '将数据表赋予变量sht
If err <> 0 Then err.Clear: Exit Sub
'如果有错误(即没有“数据”工作表)那么退出
If sht.Range("a1") = "" Then MsgBox "请在数据表中输入数据,必须从A1开始,数
据区不要留空", vbOKOnly, "提示": Exit Sub
Dim a As Range
'判断注册表中记录的单元格与活动单元格是否重叠
Set a = Intersect(Range(GetSetting("MyApp", "only", "only", "")),
ActiveCell)
If a Is Nothing Then Exit Sub '如果不在指定区域则退出
Dim i, j, addss As String
With Application.CommandBars.Add("临时菜单", msoBarPopup, , 1)
'创建一个快捷菜单
With .Controls.Add(Type:=msoControlButton) '添加一个子菜单
.Caption = "请选择" '指定显示标题
.FaceId = 136
'指定图标
End With
For i = 1 To sht.Cells(1, Columns.Count).End(xlToLeft).Column
'创建一级菜单
If WorksheetFunction.CountA(sht.Rows(2)) = 0 Then
'如果第二行为空则只创建一级菜单
With .Controls.Add(Type:=msoControlButton) '开始创建一级菜单
.Caption = sht.Cells(1, i).Text '菜单显示的标题
.Style = msoButtonIconAndCaption '同时显示文本和图标
.FaceId = 70 + i
'指定图文件
.OnAction = "输入" '指定菜单对应的宏名
End With
Else
'第二行非空则创建二级菜单
With .Controls.Add(msoControlPopup, 1, , , 1) '开如创建二级菜单
.BeginGroup = True '全部产生一条横线分隔开
.Caption = sht.Cells(1, i).Text '指定二级菜单标题
For j = 2 To sht.Cells(Rows.Count, i).End(xlUp).Row
If sht.Cells(j, i) = "" Then GoTo AA '如果为空则不创建子菜单
Set oCtrl = .Controls.Add(Type:=msoControlButton) '创建子菜单
With oCtrl '对子菜单指定标题、宏名和图标
.Caption = sht.Cells(j, i)
.OnAction = "输入"
.FaceId = 69 + j
End With
AA:
Next
End With
End If
Next
.ShowPopup '显示工具栏
End With
Application.CommandBars("临时菜单").Delete '删除工具栏
End Sub
以上事件为工作簿级别的SelectionChange事件,表示用户选择单元格时执行对应的过程。本过程首先判断当前选区是否与注册表中存储的单元格重叠,如果重叠则创建二级菜单,调用“数据”工作表中指定区域的文本作为菜单的显示标题。步骤4 返回模块中,继续输入过程“输入”的代码:
Sub 输入() '当单击二级菜单时,将菜单的标题字符写入单元格
AA = CommandBars.ActionControl.Caption '记录当前菜单的标题
'在数据表中查找变量aa,并返回找到的目标所在列的第一个单元格(即一级菜单),并写入
'活动单元格
ActiveCell = Sheets("数据").Cells.Find(What:=AA, LookAt:=xlWhole).
EntireColumn.Cells(1)
'如果“数据”工作表第二行有数据,那么将当前菜单的文字写入右边一个单元格(即二级菜单)
If WorksheetFunction.CountA(Sheets("数据").Rows(2)) <> 0 Then
ActiveCell.Offset(0, 1) = AA
End If
End Sub
以上过程是单击菜单时执行的宏过程,用于将一级和二级菜单的显示标题导出到活动单元格及活动单元格右边一个单元格。如果只有一级菜单,则只导入一级菜单的文字。步骤5 返回工作表界面,在“数据”工作表中按图2-30所示方式输入数据。其中第一行用于创建一级菜单,其他数据用于创建二级菜单;在区域中间不能有空白单元格。步骤6 切换到“职工表”,选择“开发工具”选项卡,单击【宏】按钮,在弹出的对话框中选择过程名“选项”并单击【执行】按钮,程序会弹出对话框等待用户指定需要产生二级菜单的区域,如图2-32所示。选择一个或者多个区域,程序会将地址保存在注册表中。█ 图2-32 选择产生二级菜单的区域步骤7 单击B2:B10区域中任意单元格,将弹出图2-31所示的二级菜单。如果选择菜单“业务部”→“胡大链”,那么B列和C列同时产生“业务部”和“胡大链”,如图2-33所示。█ 图2-33 使用二级菜单对两个单元格赋值步骤8 切换到“数据”工作表,将第一行以外的数据删除。返回“职工表”,选择 B4单元格,此时将弹出一级菜单,如图2-34所示。█ 图2-34 一级菜单步骤9 切换到“数据”工作表,恢复删除前的所有数据,并且在 E 列追加部门“策划部”和姓名“胡军”、“张英姿”。进入“职工表”,选择B2单元格,在弹出的菜单中也自动追加对应的二级菜单,如图2-35所示。█ 图2-35 自动添加二级菜单 原理分析※“ActionControl”对象的功能与限制 ※“ActionControl”对象代表当前所单击的菜单,可以通过“Caption”属性获取其标题文字,并导入单元格中。不过对于上一层菜单则无法获取,所以利用“OnAction”所指定的SUB过程到指定的区域中查找与“ActionControl”对象的Caption字符串相同的单元格,它所在列的首行标题即为上层菜单所显示的文本。本例中使用工作簿级事件而不用工作表事件,是为了让程序更具通用性,使其在任意工作表的指定区域中都可以调用二级菜单。“Workbook_SheetSelectionChange”是工作簿级的 SelectionChange 事件,它表示工作簿中选择任意工作表的单元格时执行的过程。如果需要指定某工作表例如“总表”忽略二级菜单,那么可以在事件的代码前加入一句代码: 知识扩展
If Sh.Name = "总表" Then Exit Sub
ShowPopup可以将指定的命令栏作为快捷菜单,在指定坐标或当前光标位置显示。如果指定坐标则在该坐标处显示,否则在鼠标箭头处显示。它可以调用自定义工具栏,例如本案例中的应用,也可以调用所有内置的快捷菜单。例如以下代码显示工作表标签菜单:
CommandBars("PLY").ShowPopup
疑难37 如何将所有表中查找的完成数汇总到总表图2-36所示包括多个组别的目标产量与实际产量,如何实现将所有组别中完成目标者汇总到总表中?█ 图2-36 某生产线产量统计表 解决方案利用循环对“总表”以外的每个工作表进行数据查找。查找前,在D列创建一个辅助区,利用公式“=IF(B2-C2=0,0/0,"")”将所有完成目标者标识一个错误值,再利用SpecialCells方法定位所有错误值所在行,并复制到“总表”中,最后清除所有辅助区。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 选择菜单“插入”→“模块”,并输入以下代码:
Sub 多表查找并汇总()
Dim sht As Worksheet, arr(), i As Integer
On Error Resume Next '验证是否存在“总表”
Set sht = Sheets("总表")
If Err <> 0 Then
'如果不存在“总表”则在最末处添加一个总表
Sheets.Add , after:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = "总表"
Else
'否则清除总表的所有数据
sht.Cells.Clear
End If
Sheets(1).Rows(1).Copy sht.[a1]
'将标题行复制到总表
For Each sht In Sheets
'遍历所有工作表
If sht.Name <> "总表" Then
'仅对总表以外的表进行操作
With sht.Range(sht.[D2], sht.Cells(Rows.Count, 3).End(xlUp).Offset
(0, 1))
'建立辅助区
.FormulaR1C1 = "=IF(RC[-2]-RC[-1]=0,0/0,"""")"
'在辅助区设置公式,当完成值等于目标值时公式返回错误
'定位D列所有错误单元格(即已完成的),并将整行复制到总表中第一个空行
.SpecialCells(xlCellTypeFormulas, 16).EntireRow.Copy Sheets("总表
").Cells(Sheets("总表").Cells(Rows.Count, 1).End(xlUp).Row + 1, 1)
.Clear
'清除辅助区
End With
End If
Next
Sheets("总表").Columns(4).Clear
'清除公式所在列
End Sub
步骤3 光标置于代码中任意位置,并按【F5】键执行,程序将对每个表中已完成者信息合并到“总表”中,如图2-37所示。█ 图2-37 合并所有组别完成数 原理分析找到完成数且合并到总表,常规思路是利用For...Next循环对C列和B列的值进行比较,如果相等则整行复制到“总表”。然而循环次数太多,效率则相应偏低。本例创建辅助列,利用公式“=IF(B2-C2=0,0/0,"")”将已完成和未完成的单元格区别开来。其中已完成者公式结果为“#DIV/0!”,而SpecialCells方法刚好可以定位这部分单元格,最后再整行复制到总表中。 知识扩展※ 利用SpecialCells定位实现快速查找 ※对某列取值或者查找信息有很多思路,而利用SpecialCells定位特殊对象是最简单的。如果数据中有某个特点是 SpecialCells 可以利用的,则直接定位,否则创建辅助区制造出SpecialCells可以利用的条件,再进行定位。创建辅助区的公式,最简单的思路是在工作表中输入公式,通过录制宏获取代码。疑难38 在窗体中罗列每月产量冠军名单图2-38所示包含了多个月的生产数据。如何实现查找每月的产量冠军并同时显示在窗体列表中呢?█ 图2-38 产量表 解决方案创建一个窗体,在窗体中添加一个列表框。利用公式“=MATCH(MAX(D2:D21), D2:D21,)”获取每个工作表中生产冠军的所有信息,然后配合 For...Next 循环找出每个月的生产冠军,并导入到数组中。最后将数组一次性赋值给窗体中列表框的List属性。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 选择菜单“插入”→“用户窗体”,并在属性窗口中将窗体的“Caption”属性修改为“每月产量冠军”;将工具箱中的列表框拖到窗体中,且调整窗体和列表框的大小,使其与图2-39一致。█ 图2-39 窗体中创建列表框步骤3 双击窗体进入窗体代码窗口,将自动产生的代码清除,然后重新输入以下代码:
Private Sub UserForm_Activate()
'激活窗体时执行
Dim sht As Worksheet, arr(), i As Integer, MaxRow As Integer, EndRow As Integer
Me.ListBox1.ListStyle = fmListStyleOption
'指定列表框的显示外观
Me.ListBox1.ColumnCount = 5
'列表框显示5列
Me.ListBox1.ColumnWidths = "40,40,40,40,40"
'每列的宽度为40
i = 1
ReDim Preserve arr(1 To 5, 1 To i)
'重新分配数组的存储空间
arr(1, i) = "月份"
'指定列表框的标题
arr(2, i) = "姓名"
arr(3, i) = "机台"
arr(4, i) = "组别"
arr(5, i) = "产量"
For Each sht In Sheets
'遍历所有工作表
i = i + 1
'累加变量
EndRow = sht.Cells(Rows.Count, 1).End(xlUp).Row
'找到工作表的最后非空行行号
'利用公式计算每个工作表中D列最大值所在的行号
MaxRow = Evaluate("=MATCH(MAX(" & sht.Name & "!D2:D" & EndRow & "),"
& sht.Name & "!D2:D" & EndRow & ",)") + 1
ReDim Preserve arr(1 To 5, 1 To i)
arr(1, i) = sht.Name
'数组1行i列写入工作表名
arr(2, i) = sht.Cells(MaxRow, 1) '2行i列写入姓名
arr(3, i) = sht.Cells(MaxRow, 2) '3行i列写入机台
arr(4, i) = sht.Cells(MaxRow, 3) '4行i列写入组别
arr(5, i) = sht.Cells(MaxRow, 4) '5行i列写入产量
Next
Me.ListBox1.List = WorksheetFunction.Transpose(arr)
'将数组倒置后写入列表框
End Sub
步骤4 选择菜单“插入”→“模块”,并在模块中输入以下代码:
Sub 多表查找()
UserForm1.Show 0
End Sub
步骤5 执行过程“多表查找”,将会弹出图2-40所示的窗体,罗列出每月的产量冠军。█ 图2-40 在窗体中罗列所有产量冠军 原理分析本案例中有两个亮点:VBA中套用公式计算最大值所在行和利用数组对列表框赋值。※ 不采用循环,一次性找出最大值所在行 ※查找一列中最大值,通常采用循环来进行。本案例中利用 Evaluate 方法计算公式“=MATCH(MAX(D2:D21),D2:D21,)”,从而一次性找出最大值所在行,避免循环。不过公式需要记录不同工作表的最大值,所以在引用区域前需要添加表名。当找到最大值及最大值对应的姓名、机台和组别时,将它导入到数组中,最后将数组赋予列表框的List属性,在窗体中展示查找结果,且包括查找值的相关资料。 知识扩展公式“=MATCH(MAX(D2:D21),D2:D21,)”用于查找 D2:D21区域中最大值所在行。为了体现通用性,其中21利用VBA计算得出。不过如果一列中有多人产量相同时,仅取第一人。如果需要将同产量者全取出,那么需要更换思路,改用Find进行循环查找。如果要将产量冠军导出到工作表而不是窗体,那么可以将数组一次性写入单元格即可:
[H1].Resize(i, 5) = WorksheetFunction.Transpose(arr)
疑难39 如何将具有外部数据引用的单元格转换成值如果工作表中引用了其他工作簿的数据,如图2-41所示,当本工作簿寄出给客户或者下属部门后,会因为找不到引用源而失去链接。那么如何删除所有外部链接呢? 解决方案具有外部链接的公式均有一个特点:公式中包括“[]”和“’!”。那么使用 Find 方法查找包含该字符的公式,转换成数值即可。█ 图2-41 生产表中引用其他表的单价 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 选择菜单“插入”→“模块”,并输入以下代码:
Sub 查找外部链接并转为值()
Dim Cell As Range, FirstAddress As String, sht As Worksheet
On Error Resume Next
Application.ScreenUpdating = False '关闭屏幕更新
For Each sht In Worksheets ' 在所有工作表中循环(注意不是sheets)
With sht.UsedRange '在已用区域中查找
'查找包括“]”和“'!”的公式,它表示该单元格有外部引用。
Set Cell = .Find("=*]*'!", LookIn:=xlFormulas, LookAt:=xlPart)
If Cell Is Nothing Then GoTo line
'如果未找到,则执行line标签后的语句
FirstAddress = Cell.Address '记录第一个查找到的单元格地址
Do
'循环查找其他单元格
Cell = Cell.Value
'将公式转换成值
Set Cell = .FindNext(Cell)
'查找下一个
Loop Until Cell.Address = FirstAddress
End With
line:
Set Cell = Nothing '将变量Cell重置为nothing
Next sht
Application.ScreenUpdating = True '恢复屏幕更新
End Sub
步骤3 光标置于代码中任意位置,并按【F5】键执行,所有工作表中引用其他工作簿的公式都瞬间被转换成数值。 原理分析※ 通过“[]”和“’!”定位具有外部链接的公式 ※公式引用其他工作簿的数据时,被引用的工作簿被删除或者修改名称、移动名称等都会造成公式结果错误。将文件下发或者邮件发送前有必要将具有外部引用的公式转换成数值。根据外部链接公式的特点:包括“[]”和“’!”。所以利用 Range.Find 方法查找具有该特征的单元格即可,通过等号赋值将找到的单元格转换成值。 知识扩展Find方法查找不到对象时,返回Nothing。而本例中如果本工作表不存在外部引用,那么变量Cell即为Nothing,此时它不存在Address属性,所以在代码中必须使用防错语句。疑难40 如何让链接到其他表中隐藏单元格的超链接生效超级链接可以单击进入其他工作表指定的单元格。然而链接的工作表被隐藏时,链接将失效,如图2-42所示。如何实现链接到隐藏表时也能生效呢?█ 图2-42 链接到隐藏工作表的超链接 解决方案首先利用Range(Target.SubAddress)方法判断链接对象是否为单元格,如果是其他工作表的单元格,那么先取消所引用的工作表的隐藏属性,然后选择被链接所引用的单元格。此过程必须通过工作簿事件SheetFollowHyperlink自动执行。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 如果未显示工程资源管理器,那么选择菜单“视图”→“工程资源管理器”。双击管理器中的“ThisWorkbook”进入工作簿事件代码窗口,并输入以下代码:
Private Sub Workbook_SheetFollowHyperlink(ByVal Sh As Object, ByVal Target
As Hyperlink)
On Error Resume Next '防错,避免超级链接的对象为非单元格
Dim sht As Worksheet '声明一个工作表对象变量
Set sht = Range(Target.SubAddress).Parent '提取链接单元格所在工作表
If Err = 0 Then '如果未出现错误(表示链接对象是单元格)
If Not sht. xlSheetVisible = xlSheetVisible Then
'如果工作表sht处于隐藏状态
Range(Target.SubAddress).Parent.Visible = True '取消隐藏状态
Range(Target.SubAddress).Parent.Select '选择链接对象所在的工作表
Range(Target.SubAddress).Select '选择链接对象
End If
End If
End Sub
步骤3 返回工作表“生产表”,单击单元格C2,C2的超链接对象“单价表”将自动显示,且链接到B1也立即生效。 原理分析工作簿事件 SheetFollowHyperlink 在单击具有超链接的单元格时发生。本例利用该事件执行过程,可以实现单击超链接时判断该链接的引用工作表的单元格地址,将该表取消隐藏后选择对应的单元格即可。事件过程的参数Target代表当前链接,其SubAddress属性包括了引用的表及单元格。 知识扩展Parent表示上层对象。单元格对象的上层是工作表,工作表对象的上层是工作簿。※ 通过xlSheetVisible属性切换工作表显示状态 ※工作表的xlSheetVisible属性表示显示状态,赋值为xlSheetVisible时表示显示工作表。前置Not后则表示工作表处于隐藏状态。疑难41 如何实现多部门电话资料模糊查询公司多个部门的电话存储在多个工作表中,如图2-43所示。如何实现“查询表”的A1单元格输入任意字符时,在多部门间查找姓名中包含该字符的电话信息?█ 图2-43 电话簿 解决方案利用工作表Change事件调用Range.Find方法实现多表模糊查找。将找到的目标导入到数组,查询完毕后再一次性导出到工作表中。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 如果未显示工程资源管理器,那么选择菜单“视图”→“工程资源管理器”使其显示。然后双击管理器中的“查询表”进入工作表事件代码窗口,并输入以下代码::
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
If Target.Address <> "$A$1" Then Exit Sub '如果活动单元格不是A1则退出程序
Range(Rows("2:2"), Selection.End(xlDown)).ClearContents
'将第一行以外的内容清除
Dim sht As Worksheet, arr(), i As Integer
For Each sht In Sheets
'遍历所有工作表
If sht.Name <> "查询表" Then
'排除“查询表”
Set Rng = sht.UsedRange.Find(What:=Target.Text, LookIn:= xlValues,
LookAt:=xlPart)
'开始查找
If Rng Is Nothing Then GoTo line '如果未找到则跳转至标签line
Set mRng = Rng
'将找到的对象赋予另一个变量
FindStr = Rng.Address
'取第一个找到的单元格的地址
Do
i = i + 1
'累加变量
ReDim Preserve arr(1 To 4, 1 To i)
'重置数组变量存储空间
arr(1, i) = sht.Name
'数组1行i列写入工作表名
arr(2, i) = Rng.Text
'数组2行i列写入姓名
arr(3, i) = Rng.Offset(0, 1)
'性别
arr(4, i) = Rng.Offset(0, 2)
'电话
Set Rng = sht.UsedRange.FindNext(Rng)
'查找下一个
Loop While FindStr <> Rng.Address
'直到找到的单元格的地址等于第一个单元格地址时停止
End If
line:
Next
[a2].Resize(i, 4) = WorksheetFunction.Transpose(arr)
'将数组倒置后写入列表框
End Sub
步骤3 关闭VBE窗口,进入“查询表”中,在A1单元格中输入“张”并按下回车键,程序会在所有部门查找姓名中包括“张”的职员的信息,罗列在A1单元格之后的区域,按数组的大小自动扩展区域。显示的值包括部门和姓名、性别、电话,如图2-44所示。█ 图2-44 多部门电话查询结果 原理分析工作表事件 Change 用于代码所在工作表中任意单元格的值产生变化时执行指定的过程。该事件常会引起递归现象,所以使用 Change 事件时,通常配合“Application.EnableEvents =False”或者判断Target是否指定单元格的方式来进行防范。多表查询电话,本例按姓名查询,只要一个字符符合条件即可。那么Range.Find方法的参数LookAt必须使用xlPart,表示模糊查找。而如果不是包含关系,而是强调“姓”,即左边一位或者两位等于Target的值,那么Find的参数可以如下设置:
Find(What:=Target.Text & "*", LookIn:=xlValues, LookAt:=xlWhole)
知识扩展※ Target与Activecell的区别 ※工作表事件的过程有一个代表Range对象的参数Target,该参数代表活动工作表中选定的区域。它和Activecell有所区别,Target可能是一个单元格,也可能是区域,而Activecell则只能是一个单元格。多表查找一定要考虑某表不存在目标值的情况,通常利用“If Rng Is Nothing…”语句来防错,确保程序不会中途弹出错误信息框。疑难42 如何实现所有未收货款者在状态栏随机显示工作簿中有数十个客户的货款回收信息,其中部分客户未收款,如图2-45所示。如何才能打开工作簿时自动在状态栏随机显示未收款的客户,并且每2秒钟更新一次?█ 图2-45 收款记录表 解决方案利用“Auto_open”作为过程名,使其具有自启动的功能。在过程中利用 Range.Find 方法查找未付款的客户,并将其导入数组变量中,同时记录未收款的客户数量。然后利用另一个过程每隔2秒钟将数组中的客户名称展现在状态栏中。 操作方法步骤1 按【Alt+F11】组合键打开VBE窗口。步骤2 选择菜单“插入”→“模块”,并输入以下代码:
Dim arr(), i '声明公共变量,供两个SUB过程调用
Sub auto_open()
Dim sht As Worksheet, rng As Range, FindRng As Range, FindStr As String
For Each sht In Sheets
'遍历所有工作表
'获取C列收款时间所有区域(由于单元格可能为空,以A列最后一行为标准)
Set rng = sht.Range(sht.[c2], sht.Cells(Rows.Count, 1).End(xlUp).
Offset(0, 2))
Set FindRng = rng.Find(What:="", LookAt:=xlWhole)
'查找空白单元格
If FindRng Is Nothing Then GoTo line
'如果未找到则跳转至标签line
FindStr = FindRng.Address
'取第一个找到的单元格的地址
Do
i = i + 1
'累加变量
ReDim Preserve arr(1 To i)
'重置数组变量存储空间
arr(i) = FindRng.Offset(0, -2).Text
'将找到空单元格左边偏移两位(即客户名)写入数组
Set FindRng = sht.UsedRange.FindNext(FindRng)
'查找下一个
Loop While FindStr <> FindRng.Address
'直到找到的单元格地址等于第一个单元格地址时停止
line:
Next
If i > 0 Then Call 随机显示
'执行“随机显示”过程
End Sub
Sub 随机显示()
Application.OnTime Now + TimeValue("00:00:02"), "随机显示"
'每两秒钟执行
'在状态栏随机显示数组Arr的值。随机性来自于Rnd函数与客户数量的乘积
Application.StatusBar = "未收款客户:" &
arr(WorksheetFunction.RoundUp(Rnd * i, 0))
End Sub
步骤3 关闭工作簿并重新打开,在状态栏可以显示未收款客户名称,每2秒钟更新一次,如图2-46所示。█ 图2-46 在状态栏随机显示未收款客户 原理分析“Auto_open”即为自启动之意,用它作为 SUB 过程名称,则该过程可以在工作簿打开时自动执行,类似于“Workbook_Open”事件。每2秒钟更新,只能使用OnTime方法在当前时间的2秒钟之后调用过程自身,即递归来实现。而随机调用数组中某个元素,则必须调整数组的参数值在1到其最大上标之间。VBA的 Rnd 函数只能产生0到1之间的小数,所以将其乘以数组的最大上标后,利用工作表函数RoundUp向上进位即可满足需求。 知识扩展※ 利用OnTime定时执行程序 ※OnTime的功能为安排一个过程在将来的特定时间运行,既可以是具体某个时间,也可以是某个时段之后的一段时间。其语法如下:Application.OnTime(EarliestTime, Procedure, LatestTime, Schedule)OnTime的参数说明如表2-2所示。█ 表2-2 OnTime参数列表}

我要回帖

更多关于 =&#039;C:\[&quot;&amp;单元格&amp;&quot;.XLS]sheet1&#039;!A1 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信