EXCEL常用VBA代码

上传人:豆*** 文档编号:201723143 上传时间:2023-04-20 格式:DOC 页数:10 大小:35KB
返回 下载 相关 举报
EXCEL常用VBA代码_第1页
第1页 / 共10页
EXCEL常用VBA代码_第2页
第2页 / 共10页
EXCEL常用VBA代码_第3页
第3页 / 共10页
点击查看更多>>
资源描述
删除列中字符串数值少于21的单元格所在的行Sub 删除行()r Rang(B65536).End(xU)Row 行数Fo h = r To 1 Se - I Cells(h,2) 21 ThnCes(h, 2).Entw.elete NeEndu -【工作表合并】将同一工作簿中的所有工作表合并到一种工作表中新建一种工作表,写入代码在新建的工作表标签处右键 查看代码(找不到的直接按一下alt+11) 把下面 的代码复制进去 然后点上面的运营 运营子程序即可:u 合并目前工作簿下的所有工作表()Appicaion.creepatg=asFoj = o ees.Cun I Seets(j).Name AtiShee.Namee X Rne(A656).nd(xp).Row 1 Shee(j).UsedngeCopCel(X, 1) n IfNxRane(B).ectppition.ScrnUpdag = TreMgBox 目前工作簿下的所有工作表已经合并完毕!,vbInformation,提示d Sub*代码这样写也行:Sub c()Fori = eets.ouTo 2 tep -1heet(i)Sletees().Useage.Cpyhts().SeectCe(Cells(650, 1).En(xUp)Row + , 1).SeletActiveShee.ateSheets().Deleteex iEdub*把一种工作簿中的所有表单合并成一种表单,怎么去掉反复的表头、标题行?措施如下:Sb ()Foi = Shee.Cn 2 Step -1heets().UseRang.Offst().Copy Shets(1).ells(56, 1).En(xlUp).Offs(1)extiEnd Sb阐明:函数FSE(reference,rows,ols,heit,wd)以指定的引用为参照系,通过给定偏移量得到新的引用。返回的引用可觉得一种单元格或单元格区域。并可以指定返回的行数或列数。通俗的讲就是OFF(参照单元格,移动的行数,移动的列数,所要引用的行数,所要引用的列数) 参照有关fst函数第三行中第一种ofset(1)是假设要要去掉的表头行数,如果有2行表头,就改成ffst(),要去掉几行表头括号中的数字就改成几。第二个fset(1)表达合并后来表格与表格之间要间隔的空行,offse(1)表达不留空行,offset()表达间隔1行空行,以此类推。也可以这样写:Sub c()F i=Shees.Counto 2 Ste1hees().UedRang.ffse(2)p Shets(1).ells(Cll(6536, 1)E(xlUp).Row 1, 1).Offse() 这个offst(0)可以不要Next En Sub*或者用如下宏代码将同一工作簿中的所有工作表合并到一种新建的工作表中按A+F1调出VBA窗口,插入一种模块,然后把下面的代码复制进去。Sub hz() et ewSet = SheetsAd(Type:=xlWorkeet) 生成一种新表 Sheet(NeSeetIne).MoveBefre:Shets(1) 将此新表移动到最前面 or i= ToWrshtCount hes(i).UsRange.CoyNeSheetCells(656.Ed(xlU).Rw+ 2, 1)将其她表的已使用区域复制到新表中 Next i MsBox 合并完毕Ed Sub这段代码很简朴,其中第四行中用FOR循环得到目前工作簿中的所有工作表,第五行中使用UsRange得到每个工作表的“已使用区域”,然后用cop措施把这些“已使用区域”中的内容复制到新建工作表中。语句Cells(a536.End(xUp).Row +2, )的作用是得到新建工作表的A列中的最后空白单元格(即要在哪个位置粘贴),加2的作用是使每次复制数据间隔2行空格(此处应表达间隔1行空格,加1的话,表达合并的表格与表格之间不留空格)。回到EXCEL窗口,执行“工具宏-宏”中的“h”宏就会自动合并工作表了。(经本人测试,不能使用右键点击标签查看代码再粘入代码的方式,应当运用菜单栏插入模块的方式)-【工作簿合并】将需要合并的工作簿文献放置在一种文献夹中,并新建一种工作簿,写入代码:Sub 合并工作薄() Dim FleTopen im x s Ige n Error T ErHlerApplicao.SreenUpdtig False FileOen = pplication.GetOpeFileam _ (ileltr:=MicroSofxce文献(*.ls),*.ls, _ Mltielect:=Tru, itle:=要合并的文献) If ypName(FileToOen) = olnTeMsgBox没有选中文献 GoTExitHndler EndIf x = 1 Whie = Uund(ilesToOpe) Workboo.OpeFlename:FilsoOpen() hets().Move Aftr:=hisWorkbo.ets(TiWrbook.Sheets.un) x = x + ndEitandler: Applcio.cepdang= ruExitubErrander: sgx Err.Decrition RsueExindlerEd Sub-显示隐藏的工作表SubSollSeets() 使目前工作簿中的所有工作表都显示(即将隐藏的工作表也显示) Di ws As Worksheet For ach wsn Seet w.Visible= re ext sn Sub-根据Set2中的数据,检查heet1中的反复数据,并且进行后续的操作(将反复数据删除或者拷贝出来)的操作。plicaton.ScreenUpatin= False = 第一种工作表检测B列= 1 第一条检测成果放在第1行Cont = 1 Firstheet_rw = hes(1).Cls(6553, C).Ed(xlU).Row Second_shet_ro Shets(2).Cells(556, C)End(xlUp).Row Dim Tobedeeted(5369)As ting For j=1To 5368 Toe_eled(j) ri(Str(Sets(2).Cells(j, 2)ale)) Ne For = 1 T First_shee_ow First_alu Tm(r(eets().ells(i, ).Value)) For j =1 To 536 Msg_e_eleted(j) If Frst_vale= Toede(j) hen heet(1).Rag(A &Ctr(i)& :A & i).Deet Shets(2).Cels(j, 4).Vue= Copied Sets(2).Cels(j, 3).Value Copied ApplictionCuCopyMod Flse She().Range(A &tr(i) & :Ag & i)Coy s(3)Pat Dstitio:=hes(3).Rage(A& i) Sees(3)Paste Cont =Cunt 1 i = i - End If Nxtj Net Appcaton.creUpdating = rue Mox 共删除了 & Count这个脚本中有某些优化的地方,本来进行数据比较时,都是使用直接Cl(x,y)的方式访问并对比,此外也是分别循环,效率非常低,Excel始终处在假死的状态。后来,先将比较小的一份数据拷贝到数组中,然后再进行循环,这样效率就提高了诸多。-合并目录中具有同样数据格式的多种xe文献Dim yah, yNm, WNam Dim Wb sWorkbook, WbN AsStri DimAs Long Di Num As ng Dm BOX As StingAppcaion.ScreenUpdain = Fals MyPth = ctiveWorkbook.Pah MyNam=Dir(Myth & & .xls)AWbNam = veWorkook.Nae Num =0 o hl Mym I Nme AWbNme hn Set W = Wrkbok.pen(yPat& & Myme) Nu = Num +1 WthWorkooks(1)ActveShee Ces(.Ran(6553)En(xlUp).Ro + 2, 1) Left(MyNa, e(MyName) -) For G = To heets.ounWhes(G).edRae.Cpy .Cells(Range(A65536)End(xlU). + 1, 1) Nex WbN= r(13)& Wb.Nam W.Clse alse n WthEndIf MyName = Di Lp Rnge(A1).Seec AplictnScrendatg = True MsBox 共合并了 Num 个工作薄下的所有工作表。如下:& Cr(13) & N, vInforato, 提示-奇偶页分别打印 Su 奇偶页分别打印()Dim %, Ps% P = xcuteExcel4Macro(“GE.DOUMEN(50)”) 总页数 gBo “目前打印奇数页,按拟定开始”F i = To Ps Sep 2AiveSet.PrintOutfro:=, o:=NxtiMsgBox “目前打印偶数页,按拟定开始.”Fr i= 2o Ps tp Aveheet.PrintOut fom:=i, T:=Nxt i En Sub -将A列最后数据行以上的所有B列图片大小调节为所在单元大小 Sub将A列最后数据行以上的所有B列图片大小调节为所在单元大小()im Pic s Pictr,i&i A6556.nd(xlp).ow For Each Pc In Sht1.ictu If NotAplication.Iteret(PiTopLeftCel,Range(“:B” i) IsNothng Then Pico=Pic.opLefll.Top Pc.Left= Pi.opLftll.Left Pi.Height = Pic.TopLeftell.Heght PicWidth = Pi.TopLeftell.Wdth End Ifx Edub 如何在原有行高的基本上增长一种固定值 PrvatSub Cmmanttn1_Click() Dimi, anGo Rws(1:00).tirRoAFit HangGao utBox(已设定自适应行高,设定想增长的行高, 增长行高) Applictin.ceenUpting Fale Foi = To 10 Rws(i).owHeight Rws(i).RowHeigh + CVar(Hanao) ex i Apication.ScreUpdating = endSub代码的意思是:选中前0行,然后自动根据内容调节到合适的行高,就跟你选中后来双击黑线是同样的效果。然后在弹出的对话框中输入你想要每行增长行高的数值,例如说输入23,每个行高就加3-其她解释:Range是区域,范畴的意思rag(A)对一种单元格集合进行范畴筛选(只选中最左上角的1个单元格),例如heet1ae(A:C3).lect将选中sheet1的左上角的9个单元格选中。1、Rang 属性age(ar)(其中 arg 为区域名称)来返回代表单个单元格或单元格区域的Range对象 、Cell 属性可用 Cel(o,column)(其中 ro 为行号,olm 为列标)返回单个单元格3、Rag 和 lls可用 Ran(1,ll2) 返回一种 ane对象,其中 ll1和 ell 为指定起始和终结位置的 ange 对象。下例设立单元格区域 1:0 的边框线条的样式。With orkshees.Rge(.Clls(1,1),.Cels(0,10).Bordes.Linetyl =lThikEnd Wih注意每个 ells 属性之前的句点。如果前导的Wh 语句应用于该 Cell属性,那么这些句点就是必需的。本示例中,句点批示单元格处在第一张工作表上。如果没有句点,ells 属性将返回活动工作表上的单元格。4、ffst 属性可用 Offset(o,coumn)(其中 rw 和 column 为行偏移量和列偏移量)返回相对于另一区域在指定偏移量处的区域。下例选定位于目前选定区域左上角单元格的向下三行且向右一列处的单元格。由于必须选定位于活动工作表上的单元格,因此必须先激活工作表。、nion 措施可用 nio(rae1,rage2,.) 返回多块区域,即该区域由两个或多种持续的单元格区域所构成。下例创立由单元格区域 1:B2 和C:D4 组合定义的对象,然后选定该定义区域。6、在VBA操作工作簿工作表时,会有诸多刷新屏幕的动作,以致代码执行速度受到影响,Applcan.Screnpdatn = als可以屏蔽屏幕刷新,进而提高运营速度,但是别忘了,在程序结尾添加恢复代码,即:Applctio.ScreenUpatin TRUESheets(j).ame-表(J)名称 ActvSeetName-活动表的名称)
展开阅读全文
相关资源
相关搜索

最新文档


当前位置:首页 > 办公文档 > 解决方案


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!