excel在测量上的应用_第1页
excel在测量上的应用_第2页
excel在测量上的应用_第3页
excel在测量上的应用_第4页
excel在测量上的应用_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

ExcelVBA在工程测量上的应用Excel是大家很熟悉的办公软件,相信大家在工作中经常使用吧。在测量工作中,你是否感觉到有很不方便的时候?比如,计算一个角度的三角函数值,而角度的单位是60进制的,此时,你一定感到很无奈,因为,Excel本身无法直接计算60进制的角度的三角函数!还有,如果你的工作表中有了点坐标值(二维或者三维),要在CAD中展绘出来,怎样才能又快又直接?不然,就只有拐弯摸角了,很痛苦啊!其实,只要对Excel进行一些挖掘,就可以发现Excel的功能我们还没有好好的利用呢。Excel本身提供了强大的二次开发功能,只要我们仔细的研究,没有什么能难倒我们的。下面,好好笔者将带你走近Excel,认识它的强大的二次开发环境VBAIDE,用它来解决上面所提到的问题,就非常容易了。初识VBAIDE首先,你必须懂得一些简单的VB编程常识。如果不懂就只有通过其他的途径去学习了。但用不着深入的研究,只要静下心来,几个小时就可以了。打开Excel,按Alt+F11即进入VBAIDE,学过VB的人一看就知道那就是熟悉的VB界面。下面看看如何定义一个函数,然后利用它来解决60进制的角度的三角函数计算问题。在菜单上依次点击[插入]->[模块],然后输入如下代码PublicFunctionDEG(nAsDouble)DimAAsDouble,BAsDouble,CAsDouble,DAsDouble,EAsDouble,FAsDouble,GAsDouble,KAAsDoubleD=Abs(n)+0.000000000000001F=Sgn(n)A=Int(D)B=Int((D-A)*100)C=D-A-B/100DEG=F*(A+B/60+C/0.36)*pi/180EndFunction这样,就定义了一个名字叫DEG的函数,它的作用就是转换60进制的角度为Excel认识的弧度。编辑完后按Alt+Q即返回Excel,再在某一单元格输入=sin(deg(A1))(A1既可以是单元格的值,也可以是输入的角度值),回车,哈哈,怎么样?结果出来了吧?你可以用计算器检验一下是否正确。如果出现#NAME?那就要设置一下安全设置。依次点[工具]->[宏]->[安全性],在安全级选项卡上选择“中”或者“低”,然后关闭后重新打开就可以了,以后只要是60进制的角度,就用它转换,非常方便哦。工程测量中,经常碰到导线的计算,如果手头没有平差计算程序就只有手工计算了,这时候你曾经想过编个小程序来计算?其实,这很简单,笔者在宛坪(上海至武威)高速公路上做测量监理,因为有大量的导线需要复核,故编写了一个附合导线计算程序,代码很简单,但很实用。下面是该程序的代码:鼠Su功b商附合导线计镜算庭(索)蚂Dimm弱AsInt通eger,低nAsI液nteger懒,msA穿sDoub充le,gg奏AsDo烈uble,飘shtAs巡Objec尸t,xx版AsDou怕ble,y氧yAsD炼ouble,堂SAs尊Double问Setsh瞎t=Th剑isWork引book.A弦ctiveS舒heet妖DoWhi惊lesht花.Cells拐(m+3抛,4)<衔>""乌m=m龄+1Loop英Forn亮=3To岭m+2粱ms=D袖EG(ms)愁+DEG盯(sht.C刺ells(n悦,4))爪ms=R稠AD(ms)略S=S泥+sht.怖Cells(缴n,3)Next拉ms=D世EG(ms)检gg=R朱AD(DEG菊(sht.C妹ells(3哲,5))孙+ms-搁DEG(s砖ht.Cel足ls(3+每m,5)阿)-pi谣*m)泛xx=0她:yy=辩0交Forn过=4To珠m+2'方位角粱sht.Ce吧lls(n,贸5)=纹RAD(DE插G(sht.颠Cells(研n-1,名5))+阀DEG(s乔ht.Cel致ls(n-练1,4)茎)-pi啊-DEG怜(gg)/耍m)'坐标增量随sht.Ce推lls(n,蝇6)=薯Format馅(sht.C屋ells(n蔑-1,兄3)*C夸os(DEG淘(sht.C粱ells(n链,5)))秩,"###工##.###叠#")涌sht.Ce恩lls(n,鹿7)=紧Format寨(sht.C们ells(n窄-1,暖3)*S狮in(DEG衔(sht.C浪ells(n吴,5)))杠,"###间##.###衫#")'坐标增量和启xx=x业x+sh拾t.Cell剖s(n,6舍)停yy=y亩y+sh拦t.Cell醉s(n,7弟)Next悬xx=x适x+sh晃t.Cell州s(3,1碑0)-s锤ht.Cel话ls(m+疮2,10库)醋yy=y过y+sh剂t.Cell衣s(3,1致1)-s岔ht.Cel叶ls(m+钟2,11姨)盼sht.Ce胁lls(m粥+4,5前)=丘"企△估α哈="&F闹ormat(吊gg,"#僵##.###犁###")或sht.Ce障lls(m遇+4,6蹦)=白"红△迫X="&阀Format题(xx,"嘱###.##殃#")于sht.Ce乔lls(m煌+4,7满)=缎"使△尾Y="&伞Format月(yy,"车###.##它#")半sht.Ce逮lls(m害+4,3葬)=铲"伤∑水S="&嗓Format捐(S,"#现##.###秤")委sht.Ce仆lls(m躬+4,9智)=乔"成△妖S="&邀Format均(Sqr(x梁x*xx芒+yy炮*yy),失"###.极###")冷sht.Ce敲lls(m全+4,1俭0)=横"疼相对精妻度残1/"&规Forma适t(S/聪Sqr(xx球*xx做+yy*输yy),失"#####绍#")桃Forn足=4To叉m+2强sht.Ce女lls(n,原8)=嗽Format胳(xx/航S*sh旨t.Cell站s(n-箱1,3),践"###.才####")秤sht.Ce锐lls(n,澡9)=办Format谢(yy/右S*sh唤t.Cell胜s(n-浊1,3),营"###.黑####")Next闯Forn躬=4To遭m+1挖sht.Ce哄lls(n,损10)=毛sht.C毛ells(n绝-1,灰10)+蓝sht.Ce侨lls(n,剩6)-售sht.Ce跌lls(n,缸8)蓝sht.Ce泰lls(n,覆11)=衫sht.C趣ells(n窃-1,倦11)+灵sht.Ce溪lls(n,厅7)-勿sht.Ce仔lls(n,梯9)Next狗Co葛lumns(返"F:K")黎.Selec型t折Se辽lectio墙n.Numb阔erForm掏atLoca柱l="0枕.000_锣"唱EndSu件b潮Public同Funct爹ionRA臣D(NuA端sDoub秋le)As润Doubl呈e存DimA营AsDou兼ble,B佣AsDo社uble,冲CAsD建ouble,亮DAs旷Double猪,EAs所Doubl冠e,FA唐sDoub亏le,G倘AsDou圈ble,p棒AsDo豪uble及D=Ab糟s(Nu)迈F=Sg佛n(Nu)轨p=18掀0#/p模i改G=p境*60#心A=In舞t(D*快p)蹦B=In完t((D-杜A/p经)*G)W=B至C=(D街-A/枪p-B你/G)域*20.6躁264806枝2粘RAD=雪(C+A碗+B/决100)挪*F撑EndFu测nction犬值得注意的是碑,辉前睁面提到夺的疼D躁E盯G隙函数别忘记加京进去。咽如果自己定义男一个名字森叫海“西计客算沈”竹的殊按钮挂,指定此工具牌的宏旧为慈“国单一附合导线彼计刻算擦”月,那么,只要稻按下面的格式集输入原始数据睛(斜体是输入众的)景,细点毅“佛计箭算米”再就可以得到计汪算结果了。所税有的过程都是屑自动的,无须枯再钉手工填写,述是不是很代方便品?霜下面我们就来斩解决上面提到缺的怪与订CA狭D镰的连接和通讯傻问题。载进警入巷VBAID猴E擦,黄按昼[烟工玩具百]->视[慈引篮用菠]侦,搞找到欣可使用的引用易,缴在崇“甲AutoCA反D200集0渣类型傻库近”点的左边打钩,如点确定就行了程。锡在模块中输入权以下代码:武Global崇Sheet券AsOb腥ject,地acadmt否extAs上acadm阶text,超fontHi侍ghtAs牙Doubl辈e笔Globa剃lxlBo保okAs浓Excel虚.Workb铅ook涛Global伤p0(2)顽AsDo壤uble,顽p1(2)荒AsDou饿ble,p衔2(2)A掉sDoub浮le畏Global鲁acadA采ppAs幻AcadAp弃plicat朝ion衣Global唇acadD秤ocAs堵AcadDo完cument段Global叨acadP捞ointA夸sacad缘Point亡Globa聪lnumb啦erAs惩Intege跃r扶Publi胡cType许pt嫂nAs纸Intege遇r链pt(2)莫AsDo休uble强Global狼pt()裁Aspt抬Globa述ltext铅1AsA欧cadTex逗t勤Glo波balCA有DAsO怎bject蓄Glo蝶balp(诱2)As丢Double误,iAs铺Integ贯er,j赛AsInt鼠eger塌阔Global逗hAs症Intege批r,lA禁sInte冲ger与Public既Funct奥ionGe锋t_ACAD饥(DwtA在sStri脆ng)As急Boole根an乒DimY虾ERAs护Intege说r浓On捐Error其Resum爬eNext躬Se敌tacad械App=款GetObj蹦ect(,联"AutoC饺AD.App妖licati伟on")揪If致ErrT趟hen隐橡Err.逢Clear舅考Set旦acadAp弹p=Cr库eateOb须ject("磨AutoCA添D.Appl贴icatio葵n")甘遮IfE蠢rrThe蛛n哗桑沈MsgBox登Err.D咽escrip蜓tion惜顿旧OnErr环orGoT忘o0志楚虾Get_AC施AD=F精alse戚耐桌ExitF侄unctio葱n些脊End屑If体En扔dIf腰On饱Error劫GoTo闸0耍Setac脾adDoc穿=acad维App.Ac搭tiveDo农cument畏ac竖adApp.踢Visibl响e=Tr惜ue劳Ge吊t_ACAD沿=Tru轻e源Di扮mtype床FaceA蛋sStri起ng皆Di炒mBold降AsBo礼olean坟Di俩mItal谦icAs朴Boolea侍n嗽Di认mchar申SetAs衫Long辩Di负mPitc缴handFa炒milyA兴sLong考ac鬼adDoc.保Active考TextSt看yle.Ge伴tFont杠typeFa燥ce,Bo芒ld,It视alic,诉charSe昨t,Pit底chandF浪amily投acadDo神c.Acti诞veText周Style.津SetFon你t别"臭宋梢体朵",Bol启d,Ita罗lic,c趁harSet森,Pitc重handFa乞mily邮EndFu淘nction番Sub徒显示对话框葡(剂)千Form1.税Show(屈0)蚁EndSu系b河Public姑Funct月ionDr黎aw_Poi歌nt(Poi盘nt()A侨sDoub具le)As碍acadP迈oint望Se锤tDraw中_Point扭=aca欺dDoc.M箱odelSp短ace.Ad罩dPoint俯(Point座)渔Dr斤aw_Poi培nt.Upd盐ate市EndFu照nction婚Public薄SubS本et_lay池er(sA侮sStri鸽ng)坐Di粪mlaye屯rObjA牌sAcad叹Layer筒Se式tlaye委rObj=艰acadD倦oc.Lay举ers.Ad遣d(s)今ac宰adDoc.燕Active度Layer爱=laye讯rObj葬EndSu好b健再按以下模式皇做个对话框:牺窗体的释名字就南叫缠“恰Form1亚”洗双蜂击春“畅展点楚”威按钮,输入以设下代码:妇Dimp0纯(2)As作Doubl竿e,p1(妻2)As胞Double压,p2(2惹)AsD刊ouble那DimT1鉴AsDo至uble,慌T2As谎Double桥,T3A男sDoub准le,T4克AsDo盏uble磁Public依neAs悄Integ千er,sp壶AsSi静ngle,退czAs狼Single勉CallG额et_ACA姐D("")丛Dimtx杠tAsA征cadTex绵t恰Dimla洪AsAc访adLaye胡r躲ForEa蛇chLay克erIn碌acadDo弃c.Mode摆lSpaceNext午CallS财et_lay器er("zd原h")吨SetSh盯eet=钞ThisWo假rkbook舱.Activ垮eSheet如Dimi乔AsInt藏eger臣DoWhi先leShe沫et.Cel摸ls(i+销1,3)菜<>""画OrSh渣eet.Ce恐lls(i薯+1,1魂)<>"圾"巩IfShe授et.Cel宜ls(i+黄1,3)妇=""坦OrShe替et.Cel摔ls(i+子1,4)恩=""妨ThenG绘oToII糟WithS锦heet霜p1(0)列=.Cel系ls(i+殖1,3)奇.Value职p1(1)泪=.Cel蹲ls(i+灵1,4)记.Value也p1(2)腹=.Cel中ls(i+野1,5)稠.Value粒EndWi田th务p(0)=赶p1(0)罩p(1)=缝p1(1)抬CallS省et_lay丝er("ZD担H")狮CallD踏raw_Po袍int(p1哈)属fontH梳ight=嫂TextB全ox5.Va略lue爪IfCel询ls(i+笨1,2)烂=""誉ThenG壤oTooo皮Settx桑t=ac钳adDoc.闯ModelS驾pace.A猎ddText形(Cells有(i+1蔑,2),滤p,fon蚕tHight湖)五txt.Co记lor=赠acMage元ntaoo:码IfCel拾ls(i+俊1,5)毯=""锄ThenG剥oToII音Set_la盛yer("炭GCD")粮p(1)=军p1(1)个-fon水tHight搂Settx辰t=ac密a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论