教你如何通過excel vba編寫測(cè)量坐標(biāo)計(jì)算程序_圖文_第1頁(yè)
教你如何通過excel vba編寫測(cè)量坐標(biāo)計(jì)算程序_圖文_第2頁(yè)
教你如何通過excel vba編寫測(cè)量坐標(biāo)計(jì)算程序_圖文_第3頁(yè)
教你如何通過excel vba編寫測(cè)量坐標(biāo)計(jì)算程序_圖文_第4頁(yè)
教你如何通過excel vba編寫測(cè)量坐標(biāo)計(jì)算程序_圖文_第5頁(yè)
已閱讀5頁(yè),還剩11頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、教你如何通過Excel VBA編寫測(cè)量坐標(biāo)計(jì)算程序發(fā)布日期:2021-01-11來(lái)源:網(wǎng)絡(luò) 未知瀏覽次數(shù):1704摘要:認(rèn)識(shí)VBA、理解VBA,并利用OfficeExcelVBA編寫測(cè)量坐標(biāo)計(jì)算程序。關(guān)鍵詞:ExcelVBA程序坐標(biāo)編寫了解:VBA是什么?簡(jiǎn)單的說(shuō)就是一種自動(dòng)化語(yǔ)言,它可以使常用的程序自動(dòng)化,可以創(chuàng)立自定義的解決方案??梢杂肊xcel的宏語(yǔ)言來(lái)使Excel自動(dòng)化運(yùn)行等Microsoft讓它開發(fā)出來(lái)的應(yīng)用程序共享一種通用的自動(dòng)化語(yǔ)言VisualBasicForApplication(VBA),可以認(rèn)為VBA是非常流行的應(yīng)用程序開發(fā)語(yǔ)言VisualBasic的子集,事實(shí)上VBA是V

2、B應(yīng)用程序的版本,盡管存在有些不同VBA和VB在結(jié)構(gòu)上仍然十分相似。如果你已經(jīng)了解VB會(huì)發(fā)現(xiàn)學(xué)習(xí)VBA非??臁O鄳?yīng)的學(xué)完VBA會(huì)給學(xué)習(xí)VB打下堅(jiān)實(shí)的根底。理由:選擇ExcelVBA編程的理由是因?yàn)樗挠?jì)算功能非常強(qiáng)大,是現(xiàn)今任何編程計(jì)算器無(wú)法逾越的。它運(yùn)用范圍廣,計(jì)算速度快,計(jì)算精度高,合理化顯示等?;蛟S很多測(cè)量人員對(duì)ExcelVBA還有些陌生,主要是大家寄托于計(jì)算器、電腦、 PDA等系列軟件使用。ExcelVBA對(duì)于大多數(shù)測(cè)量人員而沒有系統(tǒng)學(xué)過計(jì)算機(jī)語(yǔ)言程序設(shè)計(jì)的人群來(lái)講有一定模糊,不過只要有根本數(shù)學(xué)知識(shí)、測(cè)量常識(shí)和邏輯理解的人,都能通過ExcelVBA編寫設(shè)計(jì)出滿意如意的測(cè)量程序。目標(biāo):基

3、于ExcelVBA的測(cè)量坐標(biāo)計(jì)算程序的設(shè)計(jì)目標(biāo)是將繁瑣計(jì)算過程轉(zhuǎn)入到計(jì)算機(jī)中,利用程序語(yǔ)言的重復(fù)性原理,在計(jì)算機(jī)中可將坐標(biāo)計(jì)算得出更精確的結(jié)果,使坐標(biāo)計(jì)算更加可靠。最終目標(biāo)是讓用戶可以通過ExcelVBA自行完成坐標(biāo)計(jì)算程序設(shè)計(jì)。認(rèn)識(shí):學(xué)習(xí)VBA到底需要什么根底和了解些什么?學(xué)習(xí)VBA需要認(rèn)識(shí)英文字母、一般的單詞如:函數(shù)所用的過程、數(shù)學(xué)根底知識(shí)、測(cè)量常識(shí)、邏輯性思維即可。在VBA中需要了解VBA的過程、變量、屬性、方法、事件、語(yǔ)句等。ExcelVBA程序可以分為“錄制宏、自定義函數(shù),由于錄制宏編寫計(jì)算類程序它限制了計(jì)算涵式過程,而無(wú)法到達(dá)自定義數(shù)據(jù)直接運(yùn)算的目的,所以大家可以通過按鈕式點(diǎn)擊進(jìn)行

4、自定義函數(shù)過程還可以通過窗體定義過程。根本常識(shí): 1、類型:常用類型分為Integer整型、Single(單精度型)、Double(雙精度型)、String字符串型、Variant(數(shù)字)、Variant(字符)。 2、變量:Dim變量名As數(shù)據(jù)類型。例:DimAAsDouble定義變量除了可以使用Dim語(yǔ)句外,比擬常的還有:static語(yǔ)句,Private語(yǔ)句,Public語(yǔ)句。 3、常量:Const常量名As數(shù)據(jù)類型常量的值。例:ConstPI=3.1415926535898常量聲明后不可對(duì)它再進(jìn)行賦值。 4、If語(yǔ)句:If邏輯表達(dá)式ThenIfQ0Then語(yǔ)句塊1Q=-1ElseElse

5、語(yǔ)句塊2Q=1EndIfEndIf 5、Do循環(huán)語(yǔ)句:DoWihle循環(huán)條件DoWhileCells(j,1)Empty語(yǔ)句塊1X=N+(Cells(j,1)-D)*Cos(F)ExitDoY=E+(Cells(j,1)-D)*Sin(F)語(yǔ)句塊2j=j+1LoopLoop 6、調(diào)用單元格數(shù)值:WithSheets(單元格名稱)WithSheets(坐標(biāo)計(jì)算)N=.Cells(行,列)N=.Cells(3,2)E=.Cells(行,列)E=.Cells(4,2)D=.Cells(行,列)D=.Cells(5,2)F=.Cells(行,列)F=.Cells(6,2)EndWithEndWith說(shuō)

6、明:這里的.Cells(行,列)表示調(diào)用Sheets(坐標(biāo)計(jì)算)單元格中指定數(shù)值。 7、MsgBox事件語(yǔ)句:PrivateSubWorkbook_Open()PrivateSubWorkbook_Open()MsgBox提示語(yǔ)句MsgBox歡送使用直線坐標(biāo)計(jì)算程序!EndSubEndSub 主題:通過以上認(rèn)識(shí)相信大家對(duì)VBA編程稍有認(rèn)識(shí)與了解,現(xiàn)在將進(jìn)行測(cè)量坐標(biāo)計(jì)算程序設(shè)計(jì)。給大家講解的是“直線坐標(biāo)中樁計(jì)算的程序如何編寫與運(yùn)算。 思路:根據(jù)單元格輸入的數(shù)據(jù)并由With過程調(diào)用,建立Do循環(huán)計(jì)算模式自動(dòng)填充待求點(diǎn)單元格坐標(biāo)。 準(zhǔn)備:本表需將平安級(jí)別設(shè)置為“低,否那么運(yùn)行時(shí)點(diǎn)擊計(jì)算按鈕沒有反映。

7、 Office Excel 設(shè)置方法如下: Excel 2003版:工具宏平安性選擇較低的平安級(jí)別重新翻開文件即可運(yùn)行。 Excel 2007版:Office按鈕Excel選項(xiàng)信任中心信任中心設(shè)置宏設(shè)置啟用所有宏。 版本:程序測(cè)試演示版本 Microsoft Office Excel 2003直線坐標(biāo)計(jì)算原理:如下列圖所示,直線的起點(diǎn)坐標(biāo)、起點(diǎn)切線方位角ao、直線長(zhǎng)度L。直線的止點(diǎn)坐標(biāo)、止點(diǎn)方位角az計(jì)算如下:計(jì)算數(shù)據(jù):輸入直線要素起點(diǎn)坐標(biāo)xo3378605.445起點(diǎn)坐標(biāo)yo453648.704起點(diǎn)樁號(hào)O7586.707計(jì)算方位角ao98.565562程序操作步驟:1、設(shè)置表格框架可以根據(jù)自

8、己的要求設(shè)計(jì),圖示如下:2、在菜單欄上面點(diǎn)擊右鍵彈出下拉式對(duì)話框選中“VisualBasic。3、調(diào)用后的VisualBasic菜單欄顯示如下。4、插入命令按鈕按鈕主要用于鼠標(biāo)點(diǎn)擊時(shí)觸發(fā)函數(shù)運(yùn)行。5、插入命令按鈕后樣式,在上面點(diǎn)擊右鍵命令按鈕對(duì)象編輯輸入“坐標(biāo)計(jì)算名稱可以根據(jù)自己要求輸入。同樣方法添加“數(shù)據(jù)去除按鈕。6、在“坐標(biāo)計(jì)算按鈕上面點(diǎn)擊右鍵查看代碼,即可進(jìn)入代碼編輯區(qū)域。同樣方法編輯“數(shù)據(jù)去除按鈕代碼。7、代碼輸入?yún)^(qū)域,在藍(lán)色線條位置粘貼“VBA主要源碼代碼然后點(diǎn)擊左上角Excel圖標(biāo)即可返回Excel電子表格界面。這里還可以在VBAProject上面點(diǎn)擊右鍵插入模塊將代碼粘貼到模塊中

9、通過路徑指引,但是在這里就直接將代碼粘貼在按鈕內(nèi)部減少了添加模塊的繁瑣。VBA主要源碼: OptionExplicit顯式聲明模塊中的所有變量 PrivateSubCommandButton1_Click()按鈕下粘貼以下代碼:DimjAsIntegerDimAi,Bi,Ci,Di,Ei,Fi,Gi,HiAsDoubleDimN,E,D,X,Y,FAsDouble定義變量ConstPi=3.14159265358979WithSheets(坐標(biāo)計(jì)算)IfTrim(.Cells(3,2)=ThenMsgBox請(qǐng)輸入“起點(diǎn)坐標(biāo)X!,vbInformation,提示:ExitSubIfTrim(.C

10、ells(4,2)=ThenMsgBox請(qǐng)輸入“起點(diǎn)坐標(biāo)Y!,vbInformation,提示:ExitSubIfTrim(.Cells(5,2)=ThenMsgBox請(qǐng)輸入“起點(diǎn)樁號(hào)K!,vbInformation,提示:ExitSub檢測(cè)數(shù)據(jù)IfTrim(.Cells(6,2)=ThenMsgBox請(qǐng)輸入“起點(diǎn)方位角F!,vbInformation,提示:ExitSubN=.Cells(3,2)E=.Cells(4,2)D=.Cells(5,2)調(diào)用數(shù)據(jù)F=.Cells(6,2)Gi=Int(.Cells(5,2)+10)/10)*10Hi=.Cells(5,2)+.Cells(7,2)F

11、i=Abs(F)Ai=Int(Fi)Bi=(Fi-Ai)*100Bi=Int(Bi)Ci=(Fi-Ai)*10000-100*Bi六十進(jìn)制轉(zhuǎn)換為十進(jìn)制Di=Bi+Ci/60Ei=Ai+Di/60IfF0ThenF=-EiElseF=EiEndIfF=F/180*PiEndWithj=9DoWhileCells(j,1)EmptyX=N+(Cells(j,1)-D)*Cos(F)Y=E+(Cells(j,1)-D)*Sin(F)坐標(biāo)計(jì)算核心Cells(j,2)=Round(X,3)Cells(j,3)=Round(Y,3)j=j+1LoopEndSubPrivateSubCommandButto

12、n2_Click()按鈕下粘貼以下代碼: Range(B9:C65536).ClearContents EndSub VBA源碼說(shuō)明:OptionExplicit顯式聲明模塊中的所有變量;Private Sub CommandButton1_Click()Private外部,可供類或是模塊自身調(diào)用;Sub過程(不返回值)和函數(shù)(返回值)可將其視為類的方法;CommandButton1_Click()計(jì)算按鈕名稱。DimjAsInteger定義整型變量;DimAi,Bi,Ci,Di,Ei,Fi,Gi,HiAsDouble定義雙精度變量;ConstPi=3.14159265358979定義常量;W

13、ithSheets(坐標(biāo)計(jì)算)介詞;IfTrim(.Cells(3,2)=ThenMsgBox請(qǐng)輸入“起點(diǎn)坐標(biāo)X!,vbInformation,提示:ExitSubTrim刪除字符中空格;.Cells(3,2)調(diào)用表中的第三行第二列數(shù)值;MsgBox彈出窗口提示框;vbInformation彈出窗口類型;ExitSub退出程序;Gi=Int(.Cells(5,2)+10)/10)*10Int將數(shù)字舍入到最接近的整數(shù);Fi=Abs(F)Abs絕對(duì)值;IfF0ThenF=-EiElseF=EiEndIf當(dāng)F小于0那么F等于-Ei否那么F等于Ei結(jié)束判斷;EndWith結(jié)束介詞語(yǔ)句;j=9循環(huán)定義,

14、表示從第九行開始執(zhí)行;DoWhileCells(j,1)EmptyDoWhile循環(huán)控制語(yǔ)句,用于首先執(zhí)行一次循環(huán)體語(yǔ)句,然后開始測(cè)試循環(huán)條件,當(dāng)條件為真時(shí)繼續(xù)循環(huán)的處理過程;X=N+(Cells(j,1)-D)*Cos(F)Y=E+(Cells(j,1)-D)*Sin(F)Cells(j,2)=Round(X,3)Cells(j,3)=Round(Y,3)j=j+1逐句循環(huán),每成功運(yùn)行一次即為循環(huán)一次,然后繼續(xù)執(zhí)行下一行。Loop當(dāng)條件不滿足時(shí)結(jié)束循環(huán)語(yǔ)句。EndSub退出Sub程序過程。PrivateSubCommandButton2_Click()Range(B9:C65536).ClearContents去除區(qū)域B9:C65536中的內(nèi)容。EndSub粘貼后的代碼區(qū)域顯示:8、返回Excel表格后點(diǎn)擊頂部按鈕“退出設(shè)計(jì)模式即可正常點(diǎn)擊按鈕。9、在單元格中輸入數(shù)據(jù)。10、點(diǎn)擊“坐標(biāo)計(jì)算按鈕即可計(jì)算出以下坐標(biāo)。注:新建空白表格時(shí)需將單元名稱“Sheet1改為“坐標(biāo)計(jì)算。程序源碼文件下載地址: HYPERLINK :/ surmap /file/upload/202101/11/17-00-40-55-1.rar vba_zxzb.rar結(jié)論:通過實(shí)踐證明,在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論