摘要:利用Excel中的VBA編程平臺,可以編寫出各種基于Excel的數(shù)據(jù)處理程序,不僅可以數(shù)值計算,還可以進行文本格式處理,本文闡明了一種文本格式處理編程方法,展示了利用Excel2007 VBA 編程處理文本格式的基本原理與方法。
關(guān)鍵詞:VBA編程; Excel文本格式處理
中圖分類號:TP317文獻標識碼:A文章編號:1009-3044(2008)14-20948-02
1 數(shù)據(jù)處理任務(wù)陳述
將第三列變成第四列的格式,若有括號去掉括號,將括號里的字符變成上腳字符,若無括號,有“折號,將折號后的字符變成上腳,若無括號,無折號,保持原格式不變。數(shù)據(jù)內(nèi)容不變。當然如果有少數(shù)幾行可以,手工編輯改變格式就可以,如果數(shù)據(jù)上萬行,手工編輯就不可取了,編程自動改變格式自然成為首選。
2 基本算法思想
求取上腳起始位置,有即有括號為“(”的位置;沒有括號,有折號,為折號的位置;既無括號,又無折號為零。
利用Microsoft Excel中的 Visual Basic編程,使用Range對象,核心語句是Range(tt).Characters(Start:=temp,Length:=3).Font.Superscript = True
Tt為范圍變量,temp為位置變量,關(guān)鍵點是生成位置參數(shù),然后通過循環(huán),生成將目標列的數(shù)據(jù)格式修改。
標識和處理 Range 對象最常用的方法。用 A1 樣式記號引用單元格和單元格區(qū)域,
可使用Range屬性來引用A1引用樣式中的單元格或單元格區(qū)域。下述子程序?qū)卧駞^(qū)域A1:D5的字體設(shè)置為加粗。
要引用一個對象,可以使用很多不同的方法。您可以根據(jù)程序運行所處的實際環(huán)境,以方便和易于理解為原則,確定具體使用何種方法。本文主要采用使用 Range 屬性的 A1 樣式引用法。
3 數(shù)據(jù)處理過程
(1)啟用宏。窗口左上角的Office按鈕→Excel選項→信任中心→信任中心設(shè)置→宏設(shè)置→啟用宏。
(2)首先如何進入宏編輯狀態(tài)。在Excel工具菜單中,視圖→單擊宏(或)ALT+F8查看宏窗口。
(3)創(chuàng)建宏。在宏窗口的宏名文本框中輸入將創(chuàng)建的宏名,然后點擊宏窗口里的“創(chuàng)建”按鈕,便進入Visual Basic編輯窗口。
(4)生成用戶窗體。接下來在這個窗口中插入用戶窗體,再向用戶窗體添加按鈕,為新添加的按鈕增加響應(yīng)代碼。運行程序。
(5)編寫代碼。
(6)運行程序。
4 理解Excel對象模型
要完成這個編程任務(wù),須得深刻理解Excel對象模型,Excel的對象模型是通過層次結(jié)構(gòu)很有邏輯地組織在一起的,一個對象可以是其它對象的容器,可以包含其它的對象,而這些對象又包含其它的對象。位于頂層的是Application對象,也就是Excel應(yīng)用程序本身,它包含Excel中的其它的對象,如Workbook對象;一個Workbook對象包含其它一些對象,如Worksheet對象;而一個Worksheet對象又可以包含其它對象,如Range對象,等等。這就是Excel的對象模型。
例如,Range對象在Excel對象模型中的位置為:Application對象;Workbook對象;Worksheet對象;Range對象。
可以使用“對象瀏覽器”查看Excel對象模型的方法,快速瀏覽工程中的所有組件及特定過程的詳細信息。
知道了某對象在對象模型層次結(jié)構(gòu)中的位置,就可以用VBA代碼方便地引用該對象,從而對該對象進行操作,并以特定的方式組織這些對象,使Excel能根據(jù)您的需要自動化地完成工作任務(wù)。因此,要熟練掌握Excel VBA編程,必須理解Excel的對象模型。
集合是對象,是一組屬于同一類型的對象或相關(guān)的對象的集,作為它們的容器。例如,Workbooks對象是當前打開的所有Workbook對象的集合,Worksheets是包含在某個Workbook對象中的所有Worksheet對象的集合。
在Excel中,Application對象代表Excel應(yīng)用程序本身,其它的對象都從它開始。每個對象都有自已的方法和屬性,并且某些對象的一些方法和屬性是相同的。
在通常情況下,我們認為先需要選擇對象,然后再對所選對象進行處理,宏錄制器就是這樣的。事實上,在不進行選擇的情況下,直接在對象上執(zhí)行動作將會更有效且運行快速。
在大多數(shù)情況下,需要通過引用對象所在的集合間接地引用某個對象。例如,Workbooks(\"Book1.xls\")在工作簿集合中引用名為Book1的Workbook對象。
屬性可以返回對另一個對象的引用,一定要認識到這一點。例如,語句Range(\"A1\").Font.Bold=True中,F(xiàn)ont屬性返回Range對象中所包含的一個Font對象。
5 主要代碼及簡析
處理代碼分如下兩個部分,計算過程變量值如下表所示。
若有括號,則把“(”序號存到同一行的第四列單元格中,且令同行的第五列單元格值為1作為識別標志,否則,如果有“-”,則記下“-”的位置序號到本行第四列單元格中,置標記單元格值為2。
無括號且無“-”,則記下上腳標記位置為0。
5.2 根據(jù)既得的上標起始位置,實現(xiàn)目標格式
For i = 2 To 1060
tt = \"C\" Trim(Str(i)) '生成形如C1的單元格范圍值賦到變量tt中
If Sheet1.Cells(i, 4) > 0 And Sheet1.Cells(i, 5) = 1 Then '如果有括號
td = Sheet1.Cells(i, 4)
Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), \"(\", \"\") '去掉括號
Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), \")\", \"\")
Range(tt).Characters(Start:=td, Length:=3).Font.Superscript = True‘置目標子串為上腳格式
End If
If Sheet1.Cells(i, 4) > 0 And Sheet1.Cells(i, 5) = 2 Then' 如果無括號,只有“-”,則去掉串中的“-”并將目標子串置為上腳格式
td = Sheet1.Cells(i, 4)
Sheet1.Cells(i, 3) = Replace(Sheet1.Cells(i, 3), \"-\", \"\")
Range(tt).Characters(Start:=td, Length:=1).Font.Superscript = True
End If
Next i
注:本文中所涉及到的圖表、注解、公式等內(nèi)容請以PDF格式閱讀原文