資源描述:
《Excel在測(cè)量上的應(yīng)用》由會(huì)員上傳分享,免費(fèi)在線(xiàn)閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)。
1、ExcelVBA在工程測(cè)量上的應(yīng)用Excel是大家很熟悉的辦公軟件,相信大家在工作中經(jīng)常使用吧。在測(cè)量工作中,你是否感覺(jué)到有很不方便的時(shí)候?比如,計(jì)算一個(gè)角度的三角函數(shù)值,而角度的單位是60進(jìn)制的,此時(shí),你一定感到很無(wú)奈,因?yàn)?,Excel本身無(wú)法直接計(jì)算60進(jìn)制的角度的三角函數(shù)!還有,如果你的工作表中有了點(diǎn)坐標(biāo)值(二維或者三維),要在CAD中展繪出來(lái),怎樣才能又快又直接?不然,就只有拐彎摸角了,很痛苦??!其實(shí),只要對(duì)Excel進(jìn)行一些挖掘,就可以發(fā)現(xiàn)Excel的功能我們還沒(méi)有好好的利用呢。Excel本
2、身提供了強(qiáng)大的二次開(kāi)發(fā)功能,只要我們仔細(xì)的研究,沒(méi)有什么能難倒我們的。下面,好好筆者將帶你走近Excel,認(rèn)識(shí)它的強(qiáng)大的二次開(kāi)發(fā)環(huán)境VBAIDE,用它來(lái)解決上面所提到的問(wèn)題,就非常容易了。初識(shí)VBAIDE首先,你必須懂得一些簡(jiǎn)單的VB編程常識(shí)。如果不懂就只有通過(guò)其他的途徑去學(xué)習(xí)了。但用不著深入的研究,只要靜下心來(lái),幾個(gè)小時(shí)就可以了。打開(kāi)Excel,按Alt+F11即進(jìn)入VBAIDE,學(xué)過(guò)VB的人一看就知道那就是熟悉的VB界面。下面看看如何定義一個(gè)函數(shù),然后利用它來(lái)解決60進(jìn)制的角度的三角函數(shù)計(jì)算問(wèn)題。
3、在菜單上依次點(diǎn)擊[插入]->[模塊],然后輸入如下代碼PublicConstpi=3.14159265359PublicFunctionDEG(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
4、/0.36)*pi/180EndFunction這樣,就定義了一個(gè)名字叫DEG的函數(shù),它的作用就是轉(zhuǎn)換60進(jìn)制的角度為Excel認(rèn)識(shí)的弧度。編輯完后按Alt+Q即返回Excel,再在某一單元格輸入=sin(deg(A1))(A1既可以是單元格的值,也可以是輸入的角度值),回車(chē),哈哈,怎么樣?結(jié)果出來(lái)了吧?你可以用計(jì)算器檢驗(yàn)一下是否正確。如果出現(xiàn)#NAME?那就要設(shè)置一下安全設(shè)置。依次點(diǎn)[工具]->[宏]->[安全性],在安全級(jí)選項(xiàng)卡上選擇“中”或者“低”,然后關(guān)閉后重新打開(kāi)就可以了,以后只要是60進(jìn)制
5、的角度,就用它轉(zhuǎn)換,非常方便哦。工程測(cè)量中,經(jīng)常碰到導(dǎo)線(xiàn)的計(jì)算,如果手頭沒(méi)有平差計(jì)算程序就只有手工計(jì)算了,這時(shí)候你曾經(jīng)想過(guò)編個(gè)小程序來(lái)計(jì)算?其實(shí),這很簡(jiǎn)單,筆者在宛坪(上海至武威)高速公路上做測(cè)量監(jiān)理,因?yàn)橛写罅康膶?dǎo)線(xiàn)需要復(fù)核,故編寫(xiě)了一個(gè)附合導(dǎo)線(xiàn)計(jì)算程序,代碼很簡(jiǎn)單,但很實(shí)用。下面是該程序的代碼:Sub附合導(dǎo)線(xiàn)計(jì)算()DimmAsInteger,nAsInteger,msAsDouble,ggAsDouble,shtAsObject,xxAsDouble,yyAsDouble,SAsDoubleSe
6、tsht=ThisWorkbook.ActiveSheetDoWhilesht.Cells(m+3,4)<>""m=m+1LoopForn=3Tom+2ms=DEG(ms)+DEG(sht.Cells(n,4))ms=RAD(ms)S=S+sht.Cells(n,3)Nextms=DEG(ms)gg=RAD(DEG(sht.Cells(3,5))+ms-DEG(sht.Cells(3+m,5))-pi*m)xx=0:yy=0Forn=4Tom+2'方位角sht.Cells(n,5)=RAD(DEG(s
7、ht.Cells(n-1,5))+DEG(sht.Cells(n-1,4))-pi-DEG(gg)/m)'坐標(biāo)增量sht.Cells(n,6)=Format(sht.Cells(n-1,3)*Cos(DEG(sht.Cells(n,5))),"#####.####")sht.Cells(n,7)=Format(sht.Cells(n-1,3)*Sin(DEG(sht.Cells(n,5))),"#####.####")'坐標(biāo)增量和xx=xx+sht.Cells(n,6)yy=yy+sht.Cells(
8、n,7)Nextxx=xx+sht.Cells(3,10)-sht.Cells(m+2,10)yy=yy+sht.Cells(3,11)-sht.Cells(m+2,11)sht.Cells(m+4,5)="△α="&Format(gg,"###.######")sht.Cells(m+4,6)="△X="&Format(xx,"###.###")sht.Cells(m+4,7)="△Y="&Format(yy,"###.###")sht.Cells(m