




已閱讀5頁,還剩30頁未讀, 繼續(xù)免費(fèi)閱讀
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
VBA宏編程速成寶典1.1 第一部分:關(guān)鍵代碼解釋. 3 1.2 第二部分:如何錄制宏 . 9 1.3 第三部分:實(shí)例解釋如果編寫宏 . 10 1.4 第四部分:如何確定在哪個(gè)位置插入關(guān)鍵代碼呢, . 20 1.5 第五部分:如何調(diào)試宏 . 20 1.6 第六部分:分塊合成VBA代碼 . 22 1.7 第七部分:個(gè)人心得 . 25 1 / 25 序: EXCEL在我們平時(shí)的生活工作中有著廣泛和重要的應(yīng)用,尤其是對于每天和大量數(shù)據(jù)打交道的人員更重要,但同時(shí)對大量數(shù)據(jù)的操作又顯得是那么的繁瑣,一不小心就很容易出錯(cuò),對于每天都需要用EXCEL做同樣事情的人來說,要是能夠有一種工具來自動(dòng)做工作就好了。 EXCEL宏就是一個(gè)解決此類問題的辦法,編寫好一個(gè)實(shí)用的EXCEL宏可以大幅度提高工作效率和質(zhì)量,因此掌握宏編程顯得尤為重要。 但是并不是每個(gè)人都學(xué)過編程,都了解VBA語言,那么怎樣才能快速學(xué)習(xí)和掌握應(yīng)用宏呢, 下面我就根據(jù)我個(gè)人的學(xué)習(xí)經(jīng)驗(yàn)及理解來教大家如何學(xué)習(xí)VBA編程。 不需要理解代碼的含義,不需要知道哪一步操作是什么代碼,只要你會(huì)復(fù)制粘貼,就能夠?qū)懗鯡XCEL宏,提高你的工作效率。 俗話說:“授之以魚,不如授之以漁”,所以替人寫宏不如教給他方法,也方便各自修改。 學(xué)完本教程,寫一些簡單的宏肯定可以。編寫本教程的目的就是為了方便經(jīng)常和數(shù)據(jù)打交道的同事朋友,能夠各自根據(jù)需要編寫自己的宏。 備注:由于本教程V1、0版本只是針對從未接觸過VBA語言及剛?cè)腴T的人員編寫的,并未涉及更詳細(xì)的代碼分析及條件語句,循環(huán)語句,數(shù)據(jù)語句等,將會(huì)在后期的版本更新中不斷完善。 由于編者水平經(jīng)驗(yàn)有限,難免會(huì)有一些不足之處,還望多多包涵。 2 / 25 1.1 第一部分:關(guān)鍵代碼解釋 1、 Dim str As String str = ThisWorkbook.Path & *.xls Workbooks.Open str 代碼解釋:自動(dòng)打開文件名為“*”,屬性為xls的文件。同時(shí)xlsx,csv文件也可打開。 實(shí)際應(yīng)用:如果你的宏執(zhí)行需要很多文件,那么就可以再一開始就先執(zhí)行打開每個(gè)文件,如: Dim str As String str = ThisWorkbook.Path & 日常數(shù)據(jù)模板.xls Workbooks.Open str str = ThisWorkbook.Path & 臨時(shí)表.xls Workbooks.Open str str = ThisWorkbook.Path & 擾碼分布表.xls Workbooks.Open str 2、 Windows(*.xls).Activate Workbooks(*.xls).Close SaveChanges:=False 代碼解釋:關(guān)閉文件名為“*”,屬性為xls的文件等。 其中SaveChanges:=False意為不保存直接關(guān)閉該文件,如果SaveChanges:=True,則表示保存之后再關(guān)閉該文件。 實(shí)際應(yīng)用:在執(zhí)行完所有的代碼之后關(guān)閉各個(gè)已打開的文件,對于需要保存數(shù)據(jù)的SaveChanges:=True即可,對于不需要保存數(shù)據(jù)的SaveChanges:=False。 如: Windows(日常數(shù)據(jù)模板.xls).Activate Workbooks(日常數(shù)據(jù)模板.xls).Close SaveChanges:=False Windows(擾碼分布表.xls).Activate Workbooks(擾碼分布表.xls).Close SaveChanges:=True Windows(臨時(shí)表.xls).Activate Workbooks(臨時(shí)表.xls).Close SaveChanges:=False 3 / 25 3、 i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select ActiveSheet.Paste 代碼解釋:此段語句主要是對單元格進(jìn)行判斷,是否為空白,如果為空白,則執(zhí)行粘貼。具體解釋請看下圖: 假如你要把N個(gè)不同EXCEL的內(nèi)容粘貼到一個(gè)新的EXCEL里,也就是匯總所有的數(shù)據(jù)。假如第一個(gè)EXCEL內(nèi)容有13行,第二個(gè)EXCEL內(nèi)容有18行,第三個(gè)EXCEL內(nèi)容有20行,等等。 也許你會(huì)說直接定位到單元格不行嗎, 當(dāng)然,對于每天固定行數(shù)的EXCEL,是可以的,但是如果每天的數(shù)據(jù)都在變,今天第一個(gè)EXCEL有17行,第二天又變?yōu)?0行,第二個(gè)EXCEL今天有20行,第二天變?yōu)?5行,這樣你就沒法使用固定的單元格定位粘貼數(shù)據(jù)了。 因此就需要上面的代碼。 語句類型為WhileWend While (Cells(i, 1) ) Cells(i, 1)當(dāng)i=1,表示A1單元格,也就是當(dāng)A1單元格不為空白的時(shí)候,執(zhí)行i = i + 1,也就是接著判斷A2是不是空白,依次類推 當(dāng)執(zhí)行到Ai為空白時(shí)(如上圖則表示執(zhí)行到A14),執(zhí)行Cells(i, 1).Select ActiveSheet.Paste,也就是選中A14單元格,進(jìn)行粘貼。這樣通過判斷空白的方法就不會(huì)因?yàn)樾袛?shù)的變動(dòng)而產(chǎn)生影響了。 注意:上面我們說的只是根據(jù)Cells(i, 1)判斷,同樣,也可以根據(jù)Cells(i, 2)第二列判斷,Cells(i, 3)第三列判斷等,這樣就可以避免因?yàn)榍懊鎺琢械目瞻琢卸鴮?dǎo)致后面列的判斷出現(xiàn)問題。 4 / 25 4、 i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown).Select Selection.EntireRow.Delete 代碼解釋:此段語句主要是對單元格進(jìn)行判斷,是否為空白,如果為空白,則執(zhí)行該單元格以下所有數(shù)據(jù)的清除。具體解釋請看下圖: 此代碼的和3部分的代碼有相似之處,不同的地方時(shí)當(dāng)判斷Cells(i, 1)為空時(shí),下一步的執(zhí)行不一樣。 Range(Selection, Selection.End(xlDown).Select Selection.EntireRow.Delete 此語句執(zhí)行之后如下: 也就是當(dāng)Cells(i, 1)為空時(shí)(本圖表示A13為空時(shí)),從A13開始清除A13往右以及5 / 25 往下所有的數(shù)據(jù)。 此語句主要用途:修正自動(dòng)填充導(dǎo)致的數(shù)據(jù)超出計(jì)劃。 Range(A2).Select Selection.AutoFill Destination:=Range(A2:A10) 假如你有A1-A12小區(qū)CI需要關(guān)聯(lián)小區(qū)擾碼,當(dāng)你在B2單元格通過VLOOKUP關(guān)聯(lián)數(shù)據(jù)時(shí),你肯定需要讓B2自動(dòng)填充到B12。但是如果你每天都需要關(guān)聯(lián)數(shù)據(jù),而每次數(shù)據(jù)都會(huì)變化,即今天要關(guān)聯(lián)A1-A12,明天是A1-A20,這樣就需要自動(dòng)填充到A20,但是EXCEL不是智能的,你第一次設(shè)定的自動(dòng)填充到A12,當(dāng)然不會(huì)變了,這樣就有可能導(dǎo)致數(shù)據(jù)不全。 為了解決這個(gè)問題,你可以讓EXCEL自動(dòng)填充到第1000行,然后把多余的刪掉就可以了(也就是把20行以后自動(dòng)填充的數(shù)據(jù)自動(dòng)刪除)。 如圖所示:從B21開始出現(xiàn)#N/A,這些數(shù)據(jù)沒用的,使用 i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown).Select Selection.EntireRow.Delete 執(zhí)行之后,B21往下的#N/A都會(huì)清空的。 6 / 25 5、Application.DisplayAlerts = False 代碼解釋:在宏的執(zhí)行過程中出現(xiàn)的告警框不顯示。 一般情況下,如果你執(zhí)行宏,執(zhí)行最后會(huì)出現(xiàn)如下截圖,如果在代碼的最前端加上一句Application.DisplayAlerts = False,那么就不會(huì)顯示這些提示信息了。 例如上圖表示你再錄制的過程中需要進(jìn)行分列,我們知道在執(zhí)行分列之后,會(huì)彈出上面的對話框要求選擇,如果在代碼的開始不增加Application.DisplayAlerts = False,則在執(zhí)行的過程中會(huì)彈出對話框讓我們選擇,點(diǎn)擊確定之后才會(huì)繼續(xù)執(zhí)行。 6、 MsgBox 清除成功 Exit Sub Err1: MsgBox 清除失敗 7 / 25 主要是MsgBox代碼的應(yīng)用,大家可以參考網(wǎng)上的一些資料,一般改代碼都放在最后,會(huì)出現(xiàn)如下的運(yùn)行界面,主要用于提示信息。 7、 ActiveSheet.Range($A$1:$AN$295).AutoFilter Field:=12, Criteria1:=10104 ActiveWindow.ScrollColumn = 8 ActiveWindow.ScrollColumn = 7 ActiveWindow.ScrollColumn = 6 ActiveWindow.ScrollColumn = 5 ActiveWindow.ScrollColumn = 4 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 1 ActiveWindow.ScrollColumn = 2 ActiveWindow.ScrollColumn = 3 ActiveWindow.ScrollColumn = 4 Columns(N:N).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False ActiveWindow.ScrollRow = 126 ActiveWindow.ScrollRow = 501 ActiveWindow.ScrollRow = 1125 ActiveWindow.ScrollRow = 1625 ActiveWindow.ScrollRow = 2250 ActiveWindow.ScrollRow = 2375 ActiveWindow.ScrollRow = 2625 ActiveWindow.ScrollRow = 2750 ActiveWindow.ScrollRow = 2875 ActiveWindow.ScrollRow = 3000 ActiveWindow.ScrollRow = 3125 8 / 25 ActiveWindow.ScrollRow = 3249 ActiveWindow.ScrollRow = 3374 ActiveWindow.ScrollRow = 3499 ActiveWindow.ScrollRow = 3624 ActiveWindow.ScrollRow = 3749 ActiveWindow.ScrollRow = 3999 類似于ActiveWindow.ScrollColumn,ActiveWindow.ScrollRow,等等都是一些無用的代碼,產(chǎn)生這些代碼的原因就是因?yàn)槲覀兺献髽?biāo),滑動(dòng)鼠標(biāo)的滑輪造成的,這些代碼就是需要我們刪除的,刪除之后并不影響代碼的運(yùn)行,也同時(shí)使我們的代碼變的精簡美觀。 1.2 第二部分:如何錄制宏 1、 如何錄制宏。 首先打開EXCEL2007,點(diǎn)到“開發(fā)工具”那一欄,(注意:有的人打開之后發(fā)現(xiàn)沒有開發(fā)工具那一欄,原因可能是因?yàn)閺臎]用過宏,沒有開啟其功能,需要在“信任中心”下的宏設(shè)置里面設(shè)置為“啟用所有宏”即可) 2、 開始錄制宏 9 / 25 點(diǎn)擊錄制宏,如下圖所示,出現(xiàn)一個(gè)對話框,輸入宏的名字,點(diǎn)擊確定即可。 之后“錄制宏”會(huì)變成“停止錄用”,表示已經(jīng)在錄制過程中,在這個(gè)過程中你所進(jìn)行有關(guān)EXCEL的操作都會(huì)被以代碼的形式記錄下來。 1.3 第三部分:實(shí)例解釋如果編寫宏 在你創(chuàng)建一個(gè)宏命令之前,花幾分鐘來考慮你究竟想做什么。因?yàn)楹昝钍且淮蠖焰I盤輸入的集合,事先計(jì)劃你的行動(dòng)非常重要。最早的計(jì)劃宏命令的方法是手動(dòng)地將宏命令需要做的事情做一遍。在你做鍵盤輸入的同時(shí),在一張紙上記錄下他們實(shí)際發(fā)生的情況,不要漏掉任何東西。象錄音機(jī)一樣,Excel 可以將你的所有動(dòng)作錄制下來(事實(shí)上并非如此,有些操作是無法錄制的)。如果在錄制宏之前,你沒有很好地計(jì)劃,你會(huì)錄制很多不必要的步驟,而這些都會(huì)影響運(yùn)行速度。盡管修改宏代碼比去除錄制宏里面不必要的步驟容易,但是,僅僅錄制必要的步驟會(huì)節(jié)省你修改代碼的時(shí)間和以后的麻煩。 編寫宏最簡單的方法:復(fù)制粘貼刪多余,補(bǔ)頭補(bǔ)尾補(bǔ)關(guān)鍵。 實(shí)例一: 10 / 25 TD擾碼規(guī)劃工具的編寫,看起來不復(fù)雜。 最主要的就是要 經(jīng)緯度轉(zhuǎn)換距離 這個(gè)工具,當(dāng)然這也是一個(gè)宏,我們不需要了解它,只要知道它的功能是轉(zhuǎn)換距離就行了。 我們需要把宏所有需要的EXCEL文件放在同一個(gè)文件夾里。 下面是我按照我的規(guī)劃思路通過EXCEL宏錄制出來最原始的代碼: 第一步:進(jìn)行擾碼分組 Sub 進(jìn)行擾碼分組() Macro1 Macro Columns(N:N).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range(N2).Select ActiveCell.FormulaR1C1 = =INT(RC-1/4+1) Range(N2).Select Selection.AutoFill Destination:=Range(N2:N79) Range(N2:N79).Select Columns(N:N).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows(1:1).Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.Worksheets(原始表).AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets(原始表).AutoFilter.Sort.SortFields.Add Key:=Range _ (N1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal With ActiveWorkbook.Worksheets(Sheet1).AutoFilter.Sort .Header = xlYes .MatchCase = False 11 / 25 .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter End Sub 以上代碼是我最開始錄制的代碼,我們需要對其進(jìn)行修改。 其實(shí)修改代碼很簡單,只要找對位置復(fù)制粘貼就可以了。如Application.DisplayAlerts = False代碼,不管什么宏,只要把這句話加在代碼的最前面就可以了。 紅色標(biāo)注的Range(N2:N1000),注意看是從Range(N2:N79)改為Range(N2:N1000),為什么要改為1000呢, 這是因?yàn)槲覀冊阡浿坪甑臅r(shí)候,采用的數(shù)據(jù)只有79行,而我們知道每次規(guī)劃的原始數(shù)據(jù)行數(shù)肯定會(huì)變化,有可能兩百多行,為了防止數(shù)據(jù)不完全,我們就需要設(shè)置一個(gè)范圍,根據(jù)自己的理解去設(shè)置。 由上可知,我們設(shè)置為最大1000行,但是實(shí)際上的數(shù)據(jù)肯定是小于1000行的,這樣我們就需要把多余的行數(shù)刪掉,就需要在代碼后面加上下面這段代碼,這樣就能夠達(dá)到我們想要的效果了。 i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown).Select Selection.EntireRow.Delete 下面是修改之后的代碼。 Sub 進(jìn)行擾碼分組() Macro1 Macro Application.DisplayAlerts = False Columns(N:N).Select Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Range(N2).Select ActiveCell.FormulaR1C1 = =INT(RC-1/4+1) Range(N2).Select Selection.AutoFill Destination:=Range(N2:N1000) i = 1 12 / 25 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown).Select Selection.EntireRow.Delete Range(N2:N1000).Select Columns(N:N).Select Selection.Copy Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Rows(1:1).Select Application.CutCopyMode = False Selection.AutoFilter ActiveWorkbook.Worksheets(原始表).AutoFilter.Sort.SortFields.Clear ActiveWorkbook.Worksheets(原始表).AutoFilter.Sort.SortFields.Add Key:=Range _ (N1), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _ xlSortNormal ).AutoFilter.Sort With ActiveWorkbook.Worksheets(原始表.Header = xlYes .MatchCase = False .Orientation = xlTopToBottom .SortMethod = xlPinYin .Apply End With Selection.AutoFilter End Sub 經(jīng)過我們的稍微修改,復(fù)制粘貼幾個(gè)關(guān)鍵代碼,一個(gè)完整的宏代碼就產(chǎn)生了,是不是覺得很容易呢,本來也不難的。 第二步:經(jīng)緯度轉(zhuǎn)換距離 Sub 經(jīng)緯度換算距離() Macro3 Macro Range(F2:G2).Select 13 / 25 Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(經(jīng)緯度算距離.xls).Activate Range(A2).Select ActiveSheet.Paste Windows(TD擾碼規(guī)劃宏.xls).Activate Range(F1:G1).Select Application.CutCopyMode = False Selection.Copy Windows(經(jīng)緯度算距離.xls).Activate Range(C2).Select ActiveSheet.Paste Range(C2).Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range(C2:C79) Range(D2).Select Selection.AutoFill Destination:=Range(D2:D79) Range(E2).Select Selection.AutoFill Destination:=Range(E2:E79) Columns(E:E).Select Selection.Copy Columns(G:G).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range(G2).Select Range(Selection, Selection.End(xlDown).Select Windows(TD擾碼規(guī)劃宏.xls).Activate Columns(O:O).Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Windows(經(jīng)緯度算距離.xls).Activate Columns(G:G).Select Selection.Copy Windows(TD擾碼規(guī)劃宏.xls).Activate ActiveSheet.Paste Range(A1).Select Application.CutCopyMode = False ActiveWorkbook.Save End Sub 以上是剛開始錄制的宏代碼,同樣需要修改。 14 / 25 按照一開始介紹的方法修改代碼:補(bǔ)頭,補(bǔ)尾,補(bǔ)關(guān)鍵。 Sub 經(jīng)緯度換算距離() Macro3 Macro Application.DisplayAlerts = False Dim str As String str = ThisWorkbook.Path & 經(jīng)緯度算距離.xls Workbooks.Open str (上面黃色的部分就是“補(bǔ)頭”) Windows(TD擾碼規(guī)劃宏.xls).Activate Range(F2:G2).Select Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(經(jīng)緯度算距離.xls).Activate Range(A2).Select ActiveSheet.Paste Windows(TD擾碼規(guī)劃宏.xls).Activate Range(F1:G1).Select Application.CutCopyMode = False Selection.Copy Windows(經(jīng)緯度算距離.xls).Activate Range(C2).Select ActiveSheet.Paste Range(C2).Select Application.CutCopyMode = False Selection.AutoFill Destination:=Range(C2:C1000) Range(C2:C142).Select Range(D2).Select Selection.AutoFill Destination:=Range(D2:D1000) Range(D2:D142).Select Range(E2).Select Selection.AutoFill Destination:=Range(E2:E1000) i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select Range(Selection, Selection.End(xlDown).Select 15 / 25 Selection.EntireRow.Delete (上面黃色和紅色的部分就是“補(bǔ)關(guān)鍵”) Columns(E:E).Select Selection.Copy Columns(G:G).Select Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ :=False, Transpose:=False Range(G2).Select Range(Selection, Selection.End(xlDown).Select Windows(TD擾碼規(guī)劃宏.xls).Activate Columns(O:O).Select Application.CutCopyMode = False Selection.Insert Shift:=xlToRight, CopyOrigin:=xlFormatFromLeftOrAbove Windows(經(jīng)緯度算距離.xls).Activate Columns(G:G).Select Selection.Copy Windows(TD擾碼規(guī)劃宏.xls).Activate ActiveSheet.Paste Range(A1).Select Application.CutCopyMode = False ActiveWorkbook.Save Windows(經(jīng)緯度算距離.xls).Activate Workbooks(經(jīng)緯度算距離.xls).Close SaveChanges:=False (上面黃色的部分就是“補(bǔ)尾”) End Sub 又是一個(gè)只要復(fù)制粘貼就可以補(bǔ)全代碼的例子,找準(zhǔn)位置,寫起來很容易的。 下面再貼幾個(gè)代碼來更好的說明下: 日常數(shù)據(jù)制作宏是一個(gè)很典型的例子,能夠很好的表現(xiàn)出來宏代碼的初級應(yīng)用。 就拿日常數(shù)據(jù)制作宏(我只取其中4個(gè)RNC作為例子)來說:我們不需要看所有的代碼,只要找到關(guān)鍵部分,然后復(fù)制粘貼就可以了。 Sub Macro2() Macro2 Macro Dim str As String str = ThisWorkbook.Path & 日常數(shù)據(jù)模板.xls 16 / 25 Workbooks.Open str str = ThisWorkbook.Path & RNC1.xls Workbooks.Open str str = ThisWorkbook.Path & RNC2.xls Workbooks.Open str str = ThisWorkbook.Path & RNC3.xls Workbooks.Open str str = ThisWorkbook.Path & RNC4.xls Workbooks.Open str (上面標(biāo)黃色的代碼也就是我們一開始就列舉的關(guān)鍵代碼,也就是我們宏所需要的EXCEL文件,宏在執(zhí)行之前需要先打開這些文件,因?yàn)樵阡浿坪甑臅r(shí)候這些代碼是不能被錄制的,所以需要我們手動(dòng)加上去。) 復(fù)制RNC1的小區(qū)參數(shù)信息 Windows(RNC1.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B1, B2).Select Range(Selection, Selection.End(xlToRight).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select Range(A1).Select ActiveSheet.Paste Windows(RNC1.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B5).Select Range(Selection, Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select ActiveSheet.Paste (上面的黃色代碼就是進(jìn)行空格判斷之后,然后再進(jìn)行粘貼的,就是針對每天都變化的數(shù)據(jù)而采用的代碼。) 復(fù)制RNC2的小區(qū)參數(shù)信息 Windows(RNC2.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B1, B2).Select 17 / 25 Range(Selection, Selection.End(xlToRight).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select Range(A1).Select ActiveSheet.Paste Windows(RNC2.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B5).Select Range(Selection, Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select ActiveSheet.Paste 復(fù)制RNC3的小區(qū)參數(shù)信息 Windows(RNC3.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B1, B2).Select Range(Selection, Selection.End(xlToRight).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select Range(A1).Select ActiveSheet.Paste Windows(RNC3.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B5).Select Range(Selection, Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select i = 1 While (Cells(i, 1) ) i = i + 1 18 / 25 Wend Cells(i, 1).Select ActiveSheet.Paste 復(fù)制RNC4的小區(qū)參數(shù)信息 Windows(RNC4.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B1, B2).Select Range(Selection, Selection.End(xlToRight).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select Range(A1).Select ActiveSheet.Paste Windows(RNC4.xls).Activate Sheets(小區(qū)歸屬配置信息表).Select Range(B5).Select Range(Selection, Selection.End(xlToRight).Select Range(Selection, Selection.End(xlDown).Select Selection.Copy Windows(日常數(shù)據(jù)模板.xls).Activate Sheets(小區(qū)參數(shù)信息).Select i = 1 While (Cells(i, 1) ) i = i + 1 Wend Cells(i, 1).Select ActiveSheet.Paste Windows(RNC1.xls).Activate Workbooks(RNC1.xls).Close SaveChanges:=False Windows(RNC2.xls).Activate Workbooks(RNC2.xls).Close SaveChanges:=False Windows(RNC3.xls).Activate Workbooks(RNC3.xls).Close SaveChanges:=False Windows(RNC4.xls).Activate Workbooks(RNC4.xls).Close SaveChanges:=False (上面標(biāo)黃色的代碼就是我們剛開始說的關(guān)閉文件的代碼,同樣,宏錄制的時(shí)候也不能把關(guān)閉文件的操作錄制下來,也需要我們手動(dòng)添加。) 19 / 25 MsgBox 匯總成功 Exit Sub Err1: MsgBox 匯總失敗 (上面幾行就是MsgBox函數(shù),前面已做介紹,我們知道其基本用法就可以了) End Sub 1.4 第四部分:如何確定在哪個(gè)位置插入關(guān)鍵代碼呢, 我們可以在調(diào)試的時(shí)候采用逐句運(yùn)行語句,每運(yùn)行一條語句就看一下實(shí)際的效果,找到需要添加代碼的位置,這樣就可以根據(jù)自己的需要找到關(guān)鍵語句。 1.5 第五部分:如何調(diào)試宏 上面介紹的程序大多數(shù)都很短,所以找錯(cuò)誤并不是非常困難。然而,當(dāng)你編寫更長更復(fù)雜的過程時(shí),查找錯(cuò)誤源就更緩慢和費(fèi)時(shí)了。幸運(yùn)的是,VBA編輯器提供了一套方便的工具,讓你追蹤你VBA問題的過程更簡單,更快捷,有更少的挫折。程序缺陷是電腦程序中的錯(cuò)誤,而調(diào)試則是定位和解決這些錯(cuò)誤的過程。調(diào)試讓你找到你的程序?yàn)槭裁床话搭A(yù)期工作的原因。你可以通過步入程序代碼或者檢查變量值來達(dá)到目的。 使用下述指南進(jìn)行你的VBA程序調(diào)試: 如果你想要分析你的過程,通過按F8或者選擇調(diào)試-逐語句,逐語句地執(zhí)行你的代碼 如果你懷疑程序的某個(gè)地方有錯(cuò)誤發(fā)生,那么可以使用斷點(diǎn) 如果你想監(jiān)測程序中某個(gè)變量或者表達(dá)式的值,那么可以添加一個(gè)監(jiān)視表達(dá)式 如果你討厭在冗長的程序代碼中拉動(dòng)滾動(dòng)條到你感興趣的部分去,那么你可以設(shè)置一個(gè)書簽,快速跳到需要的地方。 那么如何終止VB過程嗎,如果你想到了按Esc鍵,那么你對了。如果你在運(yùn)行程序,并且突然按下Esc鍵,那么VB就會(huì)中斷程序的運(yùn)行,并顯示如圖13-1顯示的信息。然而除了Esc鍵,這個(gè)在很多情況下都很有力而且可靠的方法,VBA還提供了很多其它的方法來中斷你的過程,進(jìn)入所謂的中斷模式: , 按Ctrl+Break , 設(shè)置一個(gè)或多個(gè)斷點(diǎn) , 插入Stop語句 , 添加監(jiān)視表達(dá)式 當(dāng)你的程序執(zhí)行被臨時(shí)停止時(shí),斷點(diǎn)便發(fā)生了。VB會(huì)從過程的執(zhí)行中記住所有變量和語句的值,當(dāng)用戶從工具欄點(diǎn)擊運(yùn)行宏(或者“運(yùn)行”菜單上的相同名稱),或者點(diǎn)擊對話框(圖13-1)上面的繼續(xù)按鈕,可以恢復(fù)。 20 / 25 下面通過圖解來說明如何調(diào)試宏 如圖所示,我們進(jìn)入“開發(fā)工具”,找到我們需要調(diào)試的宏名稱,如“執(zhí)行擾碼分組”,然后點(diǎn)擊“單步執(zhí)行”,會(huì)進(jìn)入到如下界面,黃色標(biāo)注的代碼就是下一步準(zhǔn)備執(zhí)行的代碼。 我們可以按“F8”來進(jìn)行每一步的調(diào)試。 2
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 工地關(guān)懷活動(dòng)方案
- 展位售賣活動(dòng)方案
- 小規(guī)模公司團(tuán)隊(duì)活動(dòng)方案
- 市政集團(tuán)大講堂活動(dòng)方案
- 布置會(huì)議活動(dòng)方案
- 小班獲獎(jiǎng)體操活動(dòng)方案
- 巴中單位聯(lián)誼活動(dòng)方案
- 幫助貧困繪畫活動(dòng)方案
- 平安之星宣傳活動(dòng)方案
- 安利團(tuán)建活動(dòng)方案
- 2025年陜西省中考數(shù)學(xué)真題試卷及答案解析
- 呼吸機(jī)的維護(hù)與保養(yǎng)標(biāo)準(zhǔn)流程
- 2025年北方華創(chuàng)招聘筆試參考題庫含答案解析
- 期末綜合試題 2024-2025學(xué)年下期初中英語人教版七年級下冊(新教材)
- 2025年全國新高考I卷高考全國一卷真題英語試卷(真題+答案)
- 高中生物學(xué)業(yè)水平合格性考試:人教版必修1+必修2必背考點(diǎn)
- 廣東省深圳市寶安區(qū)2025年中考二模物理試卷及答案
- 安全生產(chǎn)應(yīng)急演練方案(合集)
- 2025年數(shù)字媒體藝術(shù)設(shè)計(jì)能力評估試卷及答案
- 公共組織績效評估-形考任務(wù)三(占10%)-國開(ZJ)-參考資料
- 2025年廣東高中學(xué)業(yè)水平合格性考試化學(xué)試卷試題(含答案解析)
評論
0/150
提交評論