零基礎學Excel VBA(下篇)_第1頁
零基礎學Excel VBA(下篇)_第2頁
零基礎學Excel VBA(下篇)_第3頁
零基礎學Excel VBA(下篇)_第4頁
零基礎學Excel VBA(下篇)_第5頁
已閱讀5頁,還剩311頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

零基礎學ExcelVBA(下篇)目錄\h第8章單元格的相關操作\h8.1單元格的選取\h8.2單元格中內(nèi)容的維護\h8.3單元格的插入與刪除\h8.4單元格的隱藏\h8.5單元格的查找\h8.6單元格的處理\h8.7單元格的應用\h8.8舉一反三\h第9章對話框的相關操作\h9.1MsgBox函數(shù)對話框\h9.2InputBox函數(shù)對話框\h9.3調(diào)用與屏蔽Excel對話框\h9.4對話框的應用\h9.5舉一反三\h第四篇ExcelVBA界面設計篇\h第10章應用程序界面設計\h10.1程序界面設計原則\h10.2用戶窗體的使用方法\h10.3常用控件的使用\h10.4舉一反三\h第11章常用應用程序界面及編碼設計\h11.1系統(tǒng)登錄程序的設計\h11.2數(shù)據(jù)錄入程序的設計\h11.3數(shù)據(jù)刪除與修改程序的設計\h11.4查詢程序的設計\h11.5打印程序的設計\h11.6舉一反三\h第12章圖表與數(shù)據(jù)透視表的程序設計\h12.1Chart對象概述\h12.2設計圖表相關的程序\h12.3與透視表有關的數(shù)據(jù)對象\h12.4設計數(shù)據(jù)透視表相關的程序\h12.5舉一反三\h第13章自定義函數(shù)\h13.1編寫自定義函數(shù)\h13.2使用自定義函數(shù)\h13.3在應用程序當中使用自定義函數(shù)\h13.4舉一反三\h第五篇案例應用篇\h第14章通訊錄管理系統(tǒng)\h14.1設計思路\h14.2系統(tǒng)登錄設計\h14.3系統(tǒng)主界面設計\h14.4通訊錄信息錄入設計\h14.5數(shù)據(jù)刪除與修改設計\h14.6通訊錄信息查詢設計\h本章小結\h第15章項目審計管理系統(tǒng)\h15.1設計思路\h15.2登錄權限設計\h15.3系統(tǒng)主界面設計\h15.4項目信息管理窗體設計\h15.5項目信息審核設計\h15.6項目信息查詢設計\h本章小結\h第16章企業(yè)員工管理系統(tǒng)\h16.1設計思路\h16.2系統(tǒng)登錄設計\h16.3系統(tǒng)主界面設計\h16.4員工信息管理窗體的設計\h16.5員工工資管理設計\h16.6員工信息打印窗體設計\h本章小結\h附錄ExcelVBA常用事件和方法\h光盤內(nèi)容第8章單元格的相關操作前面的兩章分別講解了工作簿和工作表的相關操作。在操作Excel的過程中,主要是對工作表中單元格進行操作。單元格泛指工作表中的一個或多個單元格,本章將主要講解與單元格有關的知識。8.1單元格的選取在操作單元格之前,首先需要選取單元格。本節(jié)將講解通過各種不同的方式來選取單元格。8.1.1單個單元格的選取在ExcelVBA當中,通常使用Range對象和Cells對象來表示單元格。使用Range對象和Cells對象選取單元格主要有以下幾種表示的方法。使用Range對象選取單元格的方法如下所示。(1)通過單元格的地址選取單元格,語法格式如下所示。Range("單元格地址").Select如選取A6單元格的程序代碼為:Range("A6").Select(2)通過單元格的列標和行數(shù)確定選取的單元格,語法格式如下所示。Range("列標"&"行數(shù)").Select如選取B6單元格的程序代碼為:Range("B"&6).Select(3)根據(jù)定義的單元格名稱選取單元格,語法格式如下所示。Range("單元格名稱").Select如選取單元格名稱為"MyCells"單元格的程序代碼為:Range("MyCells").Select使用Cells對象選取單元格的方法如下所示。(1)通過確定單元格所在的行數(shù)和列數(shù)選取單元格,語法格式如下所示。Cells(行數(shù),列數(shù)).Select如選取單元格A1的代碼為:Cells(1,1).Select說明因為單元格的行數(shù)為1,列數(shù)為1,所以A1用Cells(1,1)進行表示。(2)通過確定單元格所在的行數(shù)和列標選取單元格,語法格式如下所示。Cells(行數(shù),列標).Select如選取單元格A1的代碼為:Cells(1,"A").Select(3)根據(jù)單元格的序號選取單元格,語法格式如下所示。Cells(單元格序號).Select如選取表示序號為2的單元格的代碼為:Cells(2).Select下面再通過一個示例來講解如何選取單個單元格。示例8-1選取單個單元格(\代碼\第8章\8.1.1.xlsm)本示例實現(xiàn)的是在工作簿中單擊【選取單元格】按鈕之后,將彈出一個輸入提示對話框,在該對話框中輸入要選取單元格的地址之后,單擊【確定】按鈕,將選定指定地址的單元格。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE開發(fā)環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在代碼窗口中分別添加如下的程序代碼。01Sub選取單個單元格()02Dimsels03sels=InputBox("請輸入要選取單元格的地址","提示信息")04Range(sels).Select05EndSub在上述第4行代碼中,通過使用Range對象的Select方法選取指定的單元格,參數(shù)sels表示的是指定選取單元格的地址。(4)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“選取單個單元格”,將按鈕的顯示名稱修改為“選取”。(5)將鼠標離開按鈕控件,單擊【選取】按鈕,在彈出的輸入對話框中輸入要選取單元格的地址,如圖8.1所示。單擊【確定】按鈕,被指定地址的單元格將被選中,如圖8.2所示。圖8.1輸入選取單元格的地址圖8.2被選取的單元格實際上,還可以通過很多種的方法選取單個指定的單元格,限于篇幅,這里就不再介紹了,請讀者自己去思考練習。8.1.2選取特定單元格使用ExcelVBA程序代碼除了可以選取指定的單元格之外,還可以選取某些特定的單元格,如選取當前已使用的單元格、選取與單元格相鄰區(qū)域的單元格和選取區(qū)域端點單元格等。本節(jié)將分別講解如何選取這些特定的單元格。1.選取當前已使用的單元格當前已使用的單元格是指當前工作表中已經(jīng)使用過的單元格,即無論單元格中是否還存在著數(shù)據(jù),只要曾經(jīng)使用過就都屬于當前已使用的單元格。使用工作表的UsedRange屬性可以選取當前已使用的單元格,下面通過一個示例進行講解。示例8-2選取當前已使用的單元格(\代碼\第8章\8.1.2(1).xlsm)本示例實現(xiàn)的是在工作表中單擊【選取已使用的單元格】按鈕之后,當前已使用和使用過的單元格將全部被選中。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊。(3)進入到模塊的代碼窗口當中,并且在代碼窗口中分別添加如下的程序代碼。01Sub選取已使用的單元格()02'選取當前已使用的單元格03ActiveSheet.UsedRange.Select04EndSub在上述的第3行代碼中,通過使用ActiveSheet.UsedRange.Select語句選取當前已使用過的單元格。(4)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“選取已使用的單元格”,將按鈕的顯示名稱修改為“選取已使用的單元格”。(5)將鼠標離開按鈕控件,單擊【選取已使用的單元格】按鈕,則當前已使用過的單元格將全部被選中,如圖8.3所示。圖8.3選取當前已使用過的單元格2.根據(jù)具體要求選取單元格在ExcelVBA中,通過使用Range對象的End屬性可以實現(xiàn)通過按下Ctrl+方向鍵選取單元格的效果,具體的實現(xiàn)方法如下所示。?End(xlup):相當于按下Ctrl+向上箭頭↑。?End(xldown):相當于按下Ctrl+向下箭頭↓。?End(xltoleft):相當于按下Ctrl+向左箭頭←。?End(xltoright):相當于按下Ctrl+向右箭頭→。下面通過一個示例來具體講解這幾種選取單元格的方法。示例8-3根據(jù)具體要求選取單元格(\代碼\第8章\8.1.2(2).xlsm)本示例實現(xiàn)的是在工作表中單擊【向上選取】按鈕,則選取工作表中B列最后1個非空的單元格;如果單擊【向下選取】按鈕,則選取工作表中B列第1個非空的單元格;如果單擊【向左選取】按鈕,則選取工作表中第4行最左邊第1個非空的單元格;如果單擊【向右選取】按鈕,則選取工作表中第7行最右邊第1個非空的單元格。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊。(3)在模塊的代碼窗口中分別添加如下的程序代碼。01'選取工作表中B列最后一個非空的單元格02Sub向上選取()03Range("B65536").End(xlUp).Select04EndSub05'選取工作表中B列第一個非空的單元格06Sub向下選取()07IfRange("B1")=""Then08Range("B1").End(xlDown).Select09Else10Range("B1").Select11EndIf12EndSub13'選取工作表中第4行最左邊第一個非空的單元格14Sub向左選取()15Range("IV4").End(xlToLeft).Select16EndSub17'選取工作表中第7行最右邊第一個非空的單元格18Sub向右選取()19IfRange("A7")=""Then20Range("A7").End(xlToRight).Select21Else22Range("A7").Select23EndIf24EndSub代碼中的重要語句解釋說明如下所示。?第3行程序代碼Range("B65536").End(xlUp).Select:在選取B列最后1個非空單元格時,需要從B列最后一個單元格B65536向上進行查找。?第8行程序代碼Range("B1").End(xlDown).Select:在選取B列第1個非空單元格時,相當于從B1單元格開始向下進行查找,直到找到符合條件的單元格為止。?第15行程序代碼Range("IV4").End(xlToLeft).Select:在選取第4行最右邊的一個非空單元格時,需要從最右邊單元格向左進行查找。?第20行程序代碼Range("A7").End(xlToRight).Select:在選取第7行最左邊的一個非空單元格時,需要從最左邊單元格向右進行查找。(4)在工作表"Sheet1"中添加4個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“向上選取”,將按鈕的顯示名稱修改為“向上選取”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“向下選取”,將按鈕的顯示名稱修改為“向下選取”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“向左選取”,將按鈕的顯示名稱修改為“向左選取”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“向右選取”,將按鈕的顯示名稱修改為“向右選取”。(5)將鼠標離開按鈕控件,單擊【向上選取】按鈕,將選中工作表中B列最后一個非空的單元格,如圖8.4所示。圖8.4向上選取單元格的顯示結果(6)單擊【向下選取】按鈕,將選中工作表中B列第1個非空的單元格,如圖8.5所示。圖8.5向下選取單元格的顯示結果(7)單擊【向左選取】按鈕,將選中工作表中第4行最右端第1個非空的單元格,如圖8.6所示。圖8.6向左選取單元格的顯示結果(8)單擊【向右選取】按鈕,將選中工作表中第7行最左端第1個非空的單元格,如圖8.7所示。圖8.7向左選取單元格的顯示結果8.1.3選取全部單元格在對工作表進行操作的過程中,可以通過使用ExcelVBA程序代碼選取工作表中全部的單元格。示例8-4選取全部的單元格(\代碼\第8章\8.1.3.xlsm)本示例實現(xiàn)的是單擊工作表中【全選】按鈕之后,當前工作表中的所有單元格全部選中。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊,并且進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。'選中全部單元格Sub全選1()Cells.SelectEndSub除了通過上述代碼可以全選單元格之外,還可以通過選取所有行單元格和選取所有列單元格的方式選取工作表中所有的單元格,具體實現(xiàn)的程序代碼如下所示。'通過選取所有行單元格的方式選取所有單元格Sub全選2()Rows.SelectEndSub'通過選取所有列單元格的方式選取所有單元格Sub全選3()Columns.SelectEndSub(4)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“全選1”,將按鈕的顯示名稱修改為“全選”。(5)將鼠標離開按鈕控件,單擊【全選】按鈕,則工作表中的單元格將全部被選中,如圖8.8所示。圖8.8選取全部單元格注意在Excel工作表當中,單擊工作表左上角的【全選】按鈕,也可以選中工作表中所有的單元格,如圖8.9所示。圖8.9通過單擊【全選】按鈕選取所有單元格8.1.4選取單元格區(qū)域除了上述講解的幾種選取單元格的方法之外,還可以按照指定的區(qū)域選取單元格。選取單元格區(qū)域主要分為選取連續(xù)單元格區(qū)域和選取不連續(xù)單元格區(qū)域兩種。1.選取連續(xù)單元格區(qū)域連續(xù)單元格區(qū)域是指在工作表中,從某個單元格到另一個單元格之間的區(qū)域,如圖8.10所示的B2:E6就是一個單元格連續(xù)區(qū)域。圖8.10選取連續(xù)的單元格通過ExcelVBA程序代碼也可以選取連續(xù)的單元格區(qū)域,下面通過示例進行講解。示例8-5選取連續(xù)的單元格區(qū)域(\代碼\第8章\8.1.4(1).xlsm)本示例實現(xiàn)的是在單擊工作表中【選取連續(xù)區(qū)域】按鈕之后,彈出一個提示輸入起始單元格地址的輸入對話框,在輸入單元格的地址之后,單擊【確定】按鈕,然后將再次彈出一個提示輸入終止單元格地址的輸入對話框。在輸入單元格的地址之后,單擊【確定】按鈕,則工作表中被指定連續(xù)區(qū)域內(nèi)的單元格將全部被選中。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中,在開發(fā)模塊中添加一個模塊。(2)進入到模塊的代碼窗口當中,并且在代碼窗口中添加如下的程序代碼。Sub選取連續(xù)區(qū)域()DimstartcellsAsStringDimendcellsAsStringstartcells=InputBox("請輸入選擇區(qū)域的起始單元格地址","提示信息")endcellls=InputBox("請輸入選擇區(qū)域的終止單元格地址","提示信息")'選取連續(xù)區(qū)域的單元格Range(startcells,endcellls).SelectEndSub(3)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“選取連續(xù)區(qū)域”,將按鈕的顯示名稱修改為“選取連續(xù)區(qū)域”。(4)將鼠標離開按鈕控件,單擊【選取連續(xù)區(qū)域】按鈕,將彈出一個提示輸入起始單元格地址的輸入對話框,在該輸入對話框中輸入"C4",如圖8.11所示。圖8.11輸入選取連續(xù)區(qū)域單元格的起始單元格地址(5)在圖8.11所示的輸入對話框中單擊【確定】按鈕,將再次彈出一個提示輸入終止單元格地址的輸入對話框,在該輸入對話框中輸入"E9"之后,單擊【確定】按鈕,如圖8.12所示。圖8.12輸入選取連續(xù)區(qū)域單元格的終止單元格地址(6)在圖8.12所示的輸入對話框中單擊【確定】按鈕,則工作表中的C4:E9區(qū)域內(nèi)的單元格將全部被選中,如圖8.13所示。圖8.13選取連續(xù)區(qū)域內(nèi)的單元格2.選取不連續(xù)單元格區(qū)域前面講解了通過ExcelVBA代碼實現(xiàn)選取連續(xù)區(qū)域內(nèi)的單元格的方法,同樣,也可以實現(xiàn)選取不連續(xù)區(qū)域內(nèi)的單元格。示例8-6選取不連續(xù)的單元格區(qū)域(\代碼\第8章\8.1.4(2).xlsm)本示例實現(xiàn)的是在工作表中單擊【選取不連續(xù)區(qū)域】按鈕之后,將分別選中工作表"Sheet1"中的B2:B10單元格區(qū)域、D3:D8單元格區(qū)域和F2:G11單元格區(qū)域。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。Sub選取不連續(xù)區(qū)域()'選取不連續(xù)區(qū)域的單元格Range("B2:B10,D3:D8,F2:G11").SelectEndSub(4)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“選取不連續(xù)區(qū)域”,將按鈕的顯示名稱修改為“選取不連續(xù)區(qū)域”。(5)將鼠標離開按鈕控件,單擊【選取不連續(xù)區(qū)域】按鈕,則工作表中的B2:B10、D3:D8和F2:G113個單元格區(qū)域分別被選中,如圖8.14所示。圖8.14選取不連續(xù)的單元格區(qū)域在選取不連續(xù)的單元格區(qū)域時,可以交叉選取兩個或多個不連續(xù)的單元格區(qū)域,請看下面的示例。示例8-7選取不連續(xù)且交叉的單元格區(qū)域(\代碼\第8章\8.1.4(3).xlsm)本示例實現(xiàn)的是在工作表中單擊【選取不連續(xù)區(qū)域】按鈕之后,將分別選中工作表"Sheet1"中的B2:B10單元格區(qū)域、D4:H8單元格區(qū)域和F2:G11單元格區(qū)域。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿。(2)進入到VBE開發(fā)環(huán)境當中,在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。Sub選取不連續(xù)區(qū)域()'選取不連續(xù)區(qū)域的單元格Range("B2:B10,D4:H8,F2:G11").SelectEndSub(4)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“選取不連續(xù)區(qū)域”,將按鈕的顯示名稱修改為“選取不連續(xù)區(qū)域”。(5)將鼠標離開按鈕控件,單擊【選取不連續(xù)區(qū)域】按鈕,則工作表中的B2:B10、D4:H8和F2:G113個單元格區(qū)域分別被選中,并且選取的D4:H8和F2:G11兩個單元格區(qū)域中有一部分單元格區(qū)域被重復選取,如圖8.15所示。圖8.15選取不連續(xù)的并且交叉的單元格區(qū)域8.1.5移動單元格的選取區(qū)域通過ExcelVBA程序代碼還可以動態(tài)移動或改變單元格的選取區(qū)域。在ExcelVBA中,通過使用Offset函數(shù)和Resize函數(shù)來完成改變單元格選取范圍的功能,函數(shù)原形如下所示。Offset(移動行數(shù),移動列數(shù))Resize(總行數(shù),總列數(shù))函數(shù)中的各項參數(shù)說明如下所示。?移動列數(shù):如果為正值,表示向右移動指定的列數(shù);如果為負值,則表示向左移動指定的列數(shù)。?移動行數(shù):如果為正值,表示向下移動指定的行數(shù);如果為負值,則表示向上移動指定的行數(shù)。?總行數(shù):表示移動后的單元格區(qū)域的行數(shù)。?總列數(shù):表示移動后的單元格區(qū)域的列數(shù)。下面通過一個示例講解如何通過使用上面的函數(shù)來實現(xiàn)改變單元格的選取區(qū)域。示例8-8移動單元格的選取區(qū)域(1)(\代碼\第8章\8.1.5.xlsm)本示例實現(xiàn)的是在工作表中單擊【移動】按鈕之后,將以B1單元格為參照單元格,并且向下移動兩個單元格位置,向右移動一個單元格位置,然后再選中6行3列的單元格區(qū)域。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,在VBE開發(fā)環(huán)境當中添加一個模塊。(2)在模塊的代碼窗口中分別添加如下的程序代碼。01Sub移動()02Range("B1").Offset(2,1).Resize(6,3).Select03EndSub在上述代碼的第2行代碼中,B1單元格為參照單元格,Offset函數(shù)中的2表示向下移動2個單元格位置,1表示向右移動1個單元格位置;Resize函數(shù)中的6表示移動后區(qū)域行數(shù)為6,3表示移動后區(qū)域列數(shù)為3。(3)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“移動”,將按鈕的顯示名稱修改為“移動”。(4)將鼠標離開按鈕控件,單擊【移動】按鈕,則以B1單元格為參照單元格發(fā)生移動,改變后的單元格區(qū)域如圖8.16所示。圖8.16向下和向右移動單元格區(qū)域示例8-9移動單元格的選取區(qū)域(2)(\代碼\第8章\8.1.5(1).xlsm)本示例實現(xiàn)的是在工作表中單擊【移動】按鈕之后,將以B1單元格為參照單元格,向下移動兩個單元格位置,向左移動一個單元格位置,然后再選中6行3列的單元格區(qū)域。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,在VBE開發(fā)環(huán)境當中添加一個模塊。(2)在模塊的代碼窗口中添加如下的程序代碼。01Sub移動()02Range("B1").Offset(2,-1).Resize(6,3).Select03EndSub在上述代碼的第2行代碼中,B1單元格為參照單元格,Offset函數(shù)中的2表示向下移動2個單元格位置,-1表示向左移動1個單元格位置;Resize函數(shù)中的6表示移動后區(qū)域行數(shù)為6,3表示移動后區(qū)域列數(shù)為3。(3)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“移動”,將按鈕的顯示名稱修改為“移動”。(4)將鼠標離開按鈕控件,單擊【移動】按鈕,則以B1單元格為參照單元格移動,改變后的單元格區(qū)域如圖8.17所示。圖8.17向下和向左移動單元格區(qū)域示例8-10移動單元格的選取區(qū)域(3)(\代碼\第8章\8.1.5(2).xlsm)本示例實現(xiàn)的是在工作表中單擊【移動】按鈕之后,將以C6單元格為參照單元格,向上移動3個單元格位置,向左移動兩個單元格位置,然后再選中3行3列的單元格區(qū)域。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,在VBE開發(fā)環(huán)境當中添加一個模塊。(2)在模塊的代碼窗口中添加如下的程序代碼。01Sub移動()02Range("C6").Offset(-3,-2).Resize(3,3).Select03EndSub在上述代碼的第2行代碼中,C6單元格為參照單元格,Offset函數(shù)中的-3表示向上移動3個單元格位置,-2表示向左移動2個單元格位置;Resize函數(shù)中的3表示移動后區(qū)域行數(shù)為3,3表示移動后區(qū)域列數(shù)為3。(3)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“移動”,將按鈕的顯示名稱修改為“移動”。(4)將鼠標離開按鈕控件,單擊【移動】按鈕,則以C6單元格為參照單元格移動,改變后的單元格區(qū)域如圖8.18所示。圖8.18向上和向左移動單元格區(qū)域8.1.6選取整行和整列單元格除了通過上述的方法選取單元格之外,在工作表中還可以選取一行或一列,多行或多列的單元格。在ExcelVBA中可以用Rows屬性、Columns屬性來表示行和列,同時也可以用Range來表示行和列。示例8-11選取整行和整列單元格(\代碼\第8章\8.1.6.xlsm)本示例實現(xiàn)的是在工作表中單擊【選擇行】按鈕,將選中工作表中的整行單元格信息;單擊【選擇列】按鈕,則選中工作表中的整列單元格信息;單擊【選擇多行】按鈕,則選中工作表中的多行單元格信息;單擊【選擇多列】按鈕,則選中工作表中的多列的單元格信息。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。01'選取單行單元格02Sub選取單行()03Range("5:5").Select04EndSub05'選取多行單元格06Sub選取單行()07Range("5:8").Select08EndSub09'選取單列單元格10Sub選取單列()11Columns(2).Select12EndSub13'選取多列單元格14Sub選取多列()15Range("B:E").Select16EndSub在上述的第15行代碼中,B相當于數(shù)字2,E相當于數(shù)字5。(4)在工作表"Sheet1"中添加3個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“選取單行”,將按鈕的顯示名稱修改為“選取行”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“選取單列”,將按鈕的顯示名稱修改為“選取列”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“選取多行”,將按鈕的顯示名稱修改為“選取多行”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“選取多列”,將按鈕的顯示名稱修改為“選取多列”。(5)將鼠標離開按鈕控件,單擊【選擇行】按鈕,工作表中的第5行單元格全部被選中,如圖8.19所示。圖8.19選擇整行單元格(6)單擊【選擇列】按鈕,工作表中的第2列(B列)單元格將全部被選中,如圖8.20所示。圖8.20選擇整列單元格(7)單擊【選擇多行】按鈕,則工作表中從第5行到第8行的單元格全部被選中,如圖8.21所示。圖8.21選擇多行單元格(8)單擊【選擇多列】按鈕,則工作表中從第2列(B列)到第5列(E列)的單元格全部被選中,如圖8.22所示。圖8.22選擇多列單元格8.2單元格中內(nèi)容的維護在操作Excel的過程中,大部分的操作都是圍繞對單元格進行輸入與輸出。本節(jié)將詳細講解有關單元格信息的輸入與輸出方面的知識,主要包括常量數(shù)據(jù)的輸入與輸出和使用公式輸入與輸出數(shù)據(jù)等內(nèi)容。8.2.1單元格內(nèi)容的輸入向Excel的單元格中輸入數(shù)據(jù)主要包括向單元格中輸入常量信息和使用公式向單元格中輸入數(shù)據(jù)兩個方面,下面通過示例詳細地介紹一下這兩個方面的內(nèi)容。1.向單元格中輸入常量數(shù)據(jù)常量主要是指數(shù)字和字符等,在ExcelVBA中,通過使用單元格對象的Value屬性來實現(xiàn)向單元格中輸入常量數(shù)據(jù)的功能。示例8-12常量數(shù)據(jù)的輸入(\代碼\第8章\8.2.1(1).xlsm)本示例實現(xiàn)的是在單擊工作表中的【輸入常量】按鈕之后,在工作表"Sheet1"的B1:B10單元格中將輸入一列字符B,在C1:C10單元格中將輸入1~10之間的數(shù)值數(shù)據(jù)信息。示例實現(xiàn)的操作步驟如下所示。(1)打開Excel,新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)添加一個模塊,在模塊的代碼窗口中添加如下的程序代碼。'輸入常量數(shù)據(jù)Sub常量數(shù)據(jù)的輸入()'輸入字符常量Range("B1:B10").Value="B"'輸入數(shù)值常量DimiAsIntegerFori=1To10Cells(i,3)=iNextiEndSub(3)在工作表"Sheet1"中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“常量數(shù)據(jù)的輸入”,然后單擊【確定】按鈕。(4)將鼠標離開按鈕控件,單擊【輸入常量】按鈕,則在工作表中的B1:B10單元格中將輸入一列字符B,在C1:C10單元格中將輸入1~10之間的數(shù)值數(shù)據(jù),如圖8.23所示。圖8.23向單元格中輸入常量數(shù)據(jù)2.使用公式向單元格中輸入數(shù)據(jù)在ExcelVBA中,通過使用Formula屬性可以在單元格中輸入公式并且取得單元格的公式。在單元格中根據(jù)公式輸入數(shù)據(jù)分為使用固定公式和可變公式兩種情況。固定公式是指使用的公式在程序中已經(jīng)存在,而可變公式是指所輸入的公式位置不固定。下面分別通過示例來講解這兩種情況。示例8-13根據(jù)固定公式輸入數(shù)據(jù)(\代碼\第8章\8.2.1(2).xlsm)本示例實現(xiàn)的是在打開工作簿之后,工作表D列“庫存數(shù)量”字段中的數(shù)據(jù)信息和G列“金額”字段中的數(shù)據(jù)信息,將會根據(jù)固定的公式自動計算出相應的結果。示例實現(xiàn)的操作步驟如下所示。(1)打開Excel,新建一個Excel工作簿,在工作表"Sheet1"中輸入如圖8.24所示的數(shù)據(jù)信息。圖8.24向工作表中輸入的數(shù)據(jù)信息(2)在VBE開發(fā)環(huán)境中雙擊"ThisWorkbook"對象,進入到工作簿對象的代碼窗口當中。(3)在代碼窗口中的“對象”列表框中選擇"Workbook"對象,在“過程”列表框中選擇"Open"事件,然后在"Workbook"對象的"Open"事件中添加如下的程序代碼。PrivateSubWorkbook_Open()'計算第4行Range("D4").Formula="=B4+C4"Range("G4").Formula="=D4*F4"'計算第5行Range("D5").Formula="=B5+C5"Range("G5").Formula="=D5*F5"'計算第6行Range("D6").Formula="=B4+C6"Range("G6").Formula="=D4*F6"EndSub(4)關閉工作簿。再重新打開工作簿時,工作表中的“庫存數(shù)量”列中的數(shù)據(jù)將會由“進貨數(shù)量”列中的數(shù)據(jù)與“剩余數(shù)量”列中的數(shù)據(jù)的和得出;而“金額”列中的數(shù)據(jù)將會由“庫存數(shù)量”列中的數(shù)據(jù)與“單價”列中數(shù)據(jù)的乘積得出,如圖8.25所示。圖8.25根據(jù)公式計算出的數(shù)據(jù)信息從上面的示例中可以看出,若想計算出相關的數(shù)據(jù)信息,必須每一行都輸入一個固定的計算公式。按照這樣的寫法,那么如果數(shù)據(jù)表中有上百條數(shù)據(jù),就需要有上百個計算公式,這樣顯然是不符合實際應用的。使用可變的公式就可以解決這一問題。示例8-14根據(jù)可變的公式輸入數(shù)據(jù)(\代碼\第8章\8.2.1(3).xlsm)本示例實現(xiàn)的效果與示例8-13中實現(xiàn)的效果相同,只不過計算數(shù)據(jù)是通過使用可變的公式來實現(xiàn)的。示例實現(xiàn)的操作步驟如下所示。(1)打開Excel,新建一個Excel工作簿,在工作表"Sheet1"中輸入如圖8.26所示的數(shù)據(jù)信息。圖8.26向單元格中輸入常量數(shù)據(jù)(2)在VBE環(huán)境當中雙擊"ThisWorkbook"對象,進入到工作簿對象的代碼窗口當中。(3)在代碼窗口中的“對象”列表框中選擇"Workbook"對象,在“過程”列表框中選擇"Open"事件,然后在"Workbook"對象的"Open"事件中添加如下的程序代碼。01PrivateSubWorkbook_Open()02DimiAsInteger03'計算庫存數(shù)量的變量04Dimval1AsString05Dimval2AsString06'計算金額的變量07Dimval3AsString08Dimval4AsString09Fori=4ToRange("A65536").End(xlUp).Row10'計算庫存數(shù)量11val1=Cells(i,4).Offset(0,-2).Address(0,0)12val2=Cells(i,4).Offset(0,-1).Address(0,0)13Cells(i,4)="="&val1&"+"&val214'計算金額15val3=Cells(i,7).Offset(0,-3).Address(0,0)16val4=Cells(i,7).Offset(0,-1).Address(0,0)17Cells(i,7)="="&val3&"*"&val418Nexti19EndSub在上述的第11行代碼中,Cells(i,4).Offset(0,-2)表示的是將當前單元格向左移動2個單元格,而在第17行代碼中,語句"="&val1&"+"&val2則表示一個可變的公式,通過該公式可以計算出相應的數(shù)據(jù)信息。(4)關閉工作簿。再重新打開工作簿時,工作表中的“庫存數(shù)量”列中的數(shù)據(jù)將會由“進貨數(shù)量”列中的數(shù)據(jù)與“剩余數(shù)量”列中的數(shù)據(jù)的和得出;而“金額”列中的數(shù)據(jù)將會由“庫存數(shù)量”列中的數(shù)據(jù)與“單價”列中的數(shù)據(jù)的乘積得出,如圖8.27所示。圖8.27通過可變的公式向單元格中輸入的數(shù)據(jù)信息8.2.2清除單元格中的信息Excel工作表中的單元格信息由單元格內(nèi)容、單元格格式和單元格批注3部分組成。如果單元格中的數(shù)據(jù)信息不再需要,可以將其清除。清除單元格中的數(shù)據(jù)信息分為清除單元格格式、清除單元格內(nèi)容、清除單元格批注和清除單元格全部4種情況,下面通過示例分別講解這幾種清除單元格信息的方法。示例8-15清除單元格中的數(shù)據(jù)信息(\代碼\第8章\8.2.2.xlsm)本示例實現(xiàn)的是在單擊工作表中的【清除格式】按鈕之后,將清除工作表中指定單元格的格式;在單擊【清除內(nèi)容】按鈕之后,將清除工作表中指定單元格的內(nèi)容;在單擊【清除批注】按鈕之后,將清除工作表中指定單元格的批注;在單擊【清除全部】按鈕之后,將清除工作表中指定單元格的全部信息。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊。(3)在模塊的代碼窗口中添加如下的程序代碼。01'清除單元格的格式02Sub清除格式()03Range("C4:C9").ClearFormats04EndSub05'清除單元格的內(nèi)容06Sub清除內(nèi)容()07Range("D4:D9").ClearContents08Range("G4:G9").ClearContents09EndSub10'清除單元格的批注11Sub清除批注()12Range("B5").ClearComments13EndSub14'清除單元格的所有信息15Sub清除所有()16Range("E4:E9").Clear17EndSub代碼中使用單元格對象的ClearFormats方法(第3行代碼)實現(xiàn)清除單元格格式的功能;使用單元格對象的ClearContents方法(第7~8行代碼)清除單元格內(nèi)容的功能;使用單元格對象的ClearComments方法(第12行代碼)清除單元格批注的功能;使用單元格對象的Clear方法(第16行代碼)清除單元格全部信息的功能。(4)在工作表"Sheet1"中添加4個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“清除格式”,將按鈕的顯示名稱修改為“清除格式”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“清除內(nèi)容”,將按鈕的顯示名稱修改為“清除內(nèi)容”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“清除批注”,將按鈕的顯示名稱修改為“清除批注”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“清除全部”,將按鈕的顯示名稱修改為“清除全部”。(5)在工作表中輸入如圖8.28所示的數(shù)據(jù)信息,并且對單元格B5設置批注信息,分別對C4:C10單元格、D4:D10單元格、E4:E10單元格設置格式信息。說明在Excel中設置單元格批注的方法是,首先選中要設置批注的單元格,在該單元格上單擊鼠標右鍵,在彈出的快捷菜單中選擇“插入批注”子菜單項,然后在彈出的標簽中輸入批注信息即可。設置完批注后,將鼠標放置在設置批注的單元格上,即會顯示所設置的批注信息,如圖8.28所示。圖8.28添加完按鈕和數(shù)據(jù)信息的工作表(6)將鼠標離開按鈕控件,單擊【清除格式】按鈕,工作表中C4:C10單元格中的格式信息將被清除,如圖8.29所示。圖8.29清除單元格的格式注意單元格中只是格式信息被清除,單元格內(nèi)容和其他信息還存在。(7)單擊【清除內(nèi)容】按鈕,工作表中D4:D10單元格中的內(nèi)容和G4:G10單元格中的內(nèi)容將被清除,如圖8.30所示。注意單元格中只是內(nèi)容信息被清除,單元格格式和其他信息還存在。圖8.30清除單元格中的內(nèi)容(8)單擊【清除批注】按鈕,工作表中B5單元格中的批注信息將被清除,如圖8.31所示。圖8.31清除單元格中的批注信息(9)單擊【清除全部】按鈕,工作表中E4:E9單元格中的信息(包括內(nèi)容和格式等信息)全部被清除,如圖8.32所示。圖8.32清除單元格中的全部信息8.3單元格的插入與刪除當工作表中的行或單元格不能滿足實際需要時,可以根據(jù)需要插入新的行或單元格。相反,如果有的行或單元格不再需要,可以將其刪除。本節(jié)將詳細講解有關插入與刪除單元格方面的知識。8.3.1插入單元格在ExcelVBA中,插入單元格或插入行列對象使用的是Insert方法。下面將分別介紹如何使用Insert方法向工作表中插入行、列和單元格。1.在工作表中插入一個或多個空行下面通過一個示例來講解如何通過在工作表中插入一個或多個空行。示例8-16向工作表中插入空行(\代碼\第8章\8.3.1(1).xlsm)本示例實現(xiàn)的是在單擊工作表中的【插入單行】按鈕之后,將在工作表中的第6行單元格之前插入一個空行單元格;如果單擊【插入多行】按鈕,則將在工作表中的第6行單元格之前插入4個空行單元格。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,并且在VBE開發(fā)環(huán)境中添加一個模塊。(2)在模塊的代碼窗口中添加如下的程序代碼。01'插入單個空行02Sub插入單行()03Rows(6).Insert04EndSub05'插入多個空行06Sub插入多行()07Rows("6:9").Insert08EndSub在上述的第3行代碼中,Rows(6).Insert語句表示在指定的第6行單元格前插入一個空行單元格;在第7行代碼中的Rows("6:9").Insert語句則表示在指定的第6行單元格前,插入從第6行到第9行共4個空行單元格。(3)在工作表"Sheet1"中添加2個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“插入單行”,將按鈕的顯示名稱修改為“插入單行”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“插入多行”,將按鈕的顯示名稱修改為“插入多行”。(4)在工作表中輸入如圖8.33所示的數(shù)據(jù)信息。圖8.33插入空行單元格之前的工作表(5)單擊工作表中的【插入單行】按鈕,在工作表中的第6行單元格前將插入一個空行單元格,如圖8.34所示。圖8.34插入單個空行單元格(6)刪除插入的空行。然后單擊工作表中的【插入多行】按鈕,則在工作表中的第6行前將插入4個空白行單元格,如圖8.35所示。圖8.35插入多個空白行單元格2.在工作表中插入一個或多個空列同樣,使用Insert方法也可以向工作表中插入一個或多個空白列單元格。示例8-17向工作表中插入空列(\代碼\第8章\8.3.1(2).xlsm)本示例實現(xiàn)的是在單擊工作表中的【插入單列】按鈕之后,將在工作表中的第2列單元格之后插入一個空列單元格;如果單擊【插入多列】按鈕,則將在工作表中的第2列單元格之后插入2個空列單元格。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。'插入單個空列Sub插入單列()Columns(3).InsertEndSub'插入多個空列Sub插入多列()Columns("C:D").InsertEndSub(4)在工作表"Sheet1"中添加2個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“插入單列”,將按鈕的顯示名稱修改為“插入單列”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“插入多列”,將按鈕的顯示名稱修改為“插入多列”。(5)在工作表中輸入如圖8.36所示的數(shù)據(jù)信息。圖8.36插入空列單元格之前的工作表(6)單擊工作表中的【插入單列】按鈕,則在工作表中的第2列單元格后插入一個空列單元格,如圖8.37所示。圖8.37插入單個空列單元格(7)單擊【插入多列】按鈕,則在工作表中的第2列單元格后插入2個空白列單元格,如圖8.38所示。圖8.38插入多個空白列單元格3.在工作表中插入單元格除了在指定的位置可以插入空白行和空白列單元格之外,還可以在指定的位置插入空白的單元格。示例8-18在工作表中插入單元格(\代碼\第8章\8.3.1(3).xlsm)本示例實現(xiàn)的是在單擊工作表中的【插入單元格】按鈕之后,首先彈出一個輸入對話框,在該輸入對話框中輸入單元格的大小區(qū)域之后,單擊【確定】按鈕,將在工作表中插入指定區(qū)域的單元格。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,并且在其VBE開發(fā)環(huán)境當中添加一個模塊。(2)在模塊的代碼窗口中添加如下的程序代碼。'插入單元格Sub插入單元格()Dimcellsvaluecellsvalue=InputBox("請深入插入單元格的區(qū)域大小","信息提示")Range(cellsvalue).Insertshift:=xlDownEndSub(3)在工作表中添加一個按鈕控件,然后在其彈出的“指定宏”窗口中選擇宏“插入單元格”,將按鈕的顯示名稱修改為“插入單元格”。(4)在工作表中輸入如圖8.39所示的數(shù)據(jù)信息,單擊【插入單元格】按鈕,在彈出的輸入對話框窗口中輸入插入單元格的區(qū)域"B5:C7"。圖8.39確定輸入單元格的區(qū)域和位置(5)在如圖8.39所示的輸入對話框中單擊【確定】按鈕,則在工作表中的B5:C7指定區(qū)域插入空白的單元格,如圖8.40所示。圖8.40插入的空白單元格8.3.2刪除單元格如果工作表中的單元格不再需要,可以將其刪除。在ExcelVBA中,使用單元格對象的Delete方法刪除單元格。通常情況下,刪除單元格主要分為以下幾種情況。?刪除后單元格左移:是指在刪除指定的單元格后,其右側的單元格左移。?刪除后單元格上移:是指在刪除指定的單元格后,其下方的單元格上移。?刪除整行:將單元格所在的行刪除。?刪除整列:將單元格所在的列刪除。下面通過一個具體的示例來進行講解這幾種刪除單元格的方法。示例8-19刪除單元格(\代碼\第8章\8.3.2.xlsm)本示例實現(xiàn)的是在單擊工作表當中的【刪除后單元格左移】按鈕之后,被指定刪除單元格右側的單元格依次向左移動一個單元格;在單擊工作表當中的【刪除后單元格上移】按鈕之后,被指定刪除單元格下面的單元格將依次向上移動一個單元格;在單擊工作表當中的【刪除整行】按鈕之后,則指定單元格所在的行將被刪除;在單擊工作表當中的【刪除整列】按鈕之后,則指定單元格所在的列將被刪除。示例實現(xiàn)的具體步驟如下所示。(1)新建一個Excel工作簿,并且在其VBE開發(fā)環(huán)境當中添加一個模塊。(2)在模塊的代碼窗口中分別添加如下的程序代碼。01'刪除單元格后將其右側單元格左移02Sub刪除后左移()03Range("A5").DeleteShift:=xlToLeft04EndSub05'刪除單元格后將其下面單元格上移06Sub刪除后上移()07Range("D3").DeleteShift:=xlUp08EndSub09'刪除整行單元格10Sub刪除整行()11Range("C5").EntireRow.Delete12EndSub13'刪除整列單元格14Sub刪除整列()15Range("B3").EntireColumn.Delete16EndSub在上述的第3行與第7行代碼中,Shift是Delete的自變量,當自變量Shift為xlToLeft時,則刪除單元格后右側的單元格左移;當自變量Shift為xlUp時,則刪除單元格后下方的單元格上移。在第11行代碼中,在使用單元格對象的EntireRow屬性時,則刪除單元格所在行的數(shù)據(jù)信息。在第15行代碼中,在使用單元格對象的EntireColumn屬性時,則刪除單元格所在列的數(shù)據(jù)信息。(3)在工作表中添加4個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“刪除后左移”,將按鈕的顯示名稱修改為“刪除后單元格左移”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“刪除后上移”,將按鈕的顯示名稱修改為“刪除后單元格上移”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“刪除整行”,將按鈕的顯示名稱修改為“刪除整行”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“刪除整列”,將按鈕的顯示名稱修改為“刪除整列”。(4)在工作表中輸入如圖8.41所示的數(shù)據(jù)信息。圖8.41按照各種方式刪除單元格之前的工作表(5)在工作表中單擊【刪除后單元格左移】按鈕,則單元格A5被刪除,并且A5右側所有的單元格依次向左移動一個單元格,如圖8.42所示。圖8.42刪除后單元格左移(6)在工作表中單擊【刪除后單元格上移】按鈕,則單元格D3被刪除,并且D3單元格下面所有的單元格依次向上移動一個單元格,如圖8.43所示。圖8.43刪除后單元格上移(7)在工作表中單擊【刪除整行】按鈕,則單元格C5所在的行被刪除,如圖8.44所示。圖8.44刪除單元格所在的行(8)在工作表中單擊【刪除整列】按鈕,則單元格B3所在的列被刪除,如圖8.45所示。圖8.45刪除單元格所在的列8.4單元格的隱藏Excel中的單元格所在的行不僅可以被刪除,還可以被隱藏。同樣,在ExcelVBA中,也可以實現(xiàn)對單元格所在的行和列進行隱藏和取消隱藏的操作。8.4.1隱藏整行和整列單元格本節(jié)中將通過示例來講解在ExcelVBA中如何實現(xiàn)隱藏與取消隱藏整行和整列單元格。示例8-20隱藏整行和整列單元格(\代碼\第8章\8.4.1.xlsm)本示例實現(xiàn)的是當單擊工作表中的【隱藏整行】按鈕之后,將隱藏工作表"Sheet1"中第4行到第6行的單元格數(shù)據(jù);當單擊【隱藏整列】按鈕之后,將隱藏工作表"Sheet1"中A列和B列中的單元格數(shù)據(jù)。示例實現(xiàn)的具體步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境中添加一個模塊,并在模塊的代碼窗口中添加如下的程序代碼。'隱藏整行單元格Sub隱藏整行()Rows("4:6").Hidden=TrueEndSub'取消整行隱藏單元格Sub取消整行隱藏()Rows("4:6").Hidden=FalseEndSub'隱藏整列單元格Sub隱藏整列()Columns("A:B").Hidden=TrueEndSub'取消隱藏整列單元格Sub取消整列隱藏()Columns("A:B").Hidden=FalseEndSub(3)在工作表中分別添加4個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“隱藏整行”,將按鈕的顯示名稱修改為“隱藏整行”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“取消整行隱藏”,將按鈕的顯示名稱修改為“取消行隱藏”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“隱藏整列”,將按鈕的顯示名稱修改為“隱藏整列”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“取消列隱藏”,將按鈕的顯示名稱修改為“取消列隱藏”,單擊【確定】按鈕。(4)在工作表中輸入如圖8.46所示的數(shù)據(jù)信息。圖8.46輸入數(shù)據(jù)信息后的工作表(5)單擊工作表中的【隱藏整行】按鈕,將隱藏工作表中第4行至第6行的單元格,如圖8.47所示。圖8.47整行隱藏單元格(6)單擊工作表中的【取消行隱藏】按鈕,將取消對第4行至第6行的單元格的隱藏,恢復到如圖8.46所示的狀態(tài)。(7)單擊工作表中的【隱藏整列】按鈕,將隱藏工作表中A列和B列的單元格,如圖8.48所示。圖8.48整列隱藏單元格(8)單擊工作表中的【取消列隱藏】按鈕,將取消對A列和B列單元格的隱藏,恢復到如圖8.46所示的狀態(tài)。8.4.2隱藏單元格所在的行和列在Excel中,無法實現(xiàn)對單個單元格的隱藏,只能夠對單元格所在的行或列進行隱藏。本節(jié)將通過示例來講解如何隱藏單元格所在的行和列。示例8-21隱藏單元格所在的行和列(\代碼\第8章\8.4.2.xlsm)在本示例中,單擊工作表中的【隱藏指定行】按鈕,將彈出一個輸入對話框窗口,在該窗口中輸入一個單元格的地址之后,單擊【確定】按鈕,將隱藏指定單元格所在的行。如果單擊工作表中的【隱藏指定列】按鈕,將彈出一個輸入對話框窗口,在該窗口中輸入一個單元格的地址之后,單擊【確定】按鈕,將隱藏指定單元格所在的列。示例實現(xiàn)的具體步驟如下所示。(1)新建一個Excel工作簿。(2)在VBE環(huán)境中添加一個模塊。(3)在模塊的代碼窗口中添加如下的程序代碼。'隱藏指定單元格所在的行Sub隱藏指定行()DimHidrowsHidrows=InputBox("請輸入單元格的地址","提示信息")Range(Hidrows).EntireRow.Hidden=TrueEndSub'取消隱藏指定單元格所在的行Sub取消隱藏指定行()DimHidrowsHidrows=InputBox("請輸入單元格的地址","提示信息")Range(Hidrows).EntireRow.Hidden=FalseEndSub'隱藏指定單元格所在的列Sub隱藏指定列()DimHidcolumnsHidcolumns=InputBox("請輸入單元格的地址","提示信息")Range(Hidcolumns).EntireColumn.Hidden=TrueEndSub'取消隱藏指定單元格所在的列Sub取消隱藏指定列()DimHidcolumnsHidcolumns=InputBox("請輸入單元格的地址","提示信息")Range(Hidcolumns).EntireColumn.Hidden=FalseEndSub(4)在工作表中分別添加4個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“隱藏指定行”,將按鈕的顯示名稱修改為“隱藏指定行”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“取消隱藏指定行”,將按鈕的顯示名稱修改為“取消隱藏指定行”;在“按鈕3”彈出的“指定宏”窗口中選擇宏“隱藏指定列”,將按鈕的顯示名稱修改為“隱藏指定列”;在“按鈕4”彈出的“指定宏”窗口中選擇宏“取消隱藏指定列”,將按鈕的顯示名稱修改為“取消隱藏指定列”,單擊【確定】按鈕。(5)在工作表"Sheet1"中輸入如圖8.49所示的數(shù)據(jù)信息,并且將添加的按鈕控件擺放到相應的位置。圖8.49輸入數(shù)據(jù)信息后的工作表(6)單擊工作表中的【隱藏指定行】按鈕,將彈出一個輸入對話框,如圖8.50所示。在該輸入對話框中輸入單元格地址D5,單擊【確定】按鈕之后,單元格D5所在的行(第5行)被隱藏,如圖8.51所示。圖8.50輸入隱藏行的單元格地址圖8.51隱藏指定行(7)單擊工作表中的【取消隱藏指定行】按鈕,并且在彈出的輸入對話框中輸入單元格地址D5,單擊【確定】按鈕之后,單元格D5所在的行(第5行)被取消隱藏。(8)單擊工作表中的【隱藏指定列】按鈕,將彈出一個輸入對話框,如圖8.52所示。在該輸入對話框中輸入單元格地址G7,單擊【確定】按鈕之后,單元格G7所在的列(第G行)被隱藏,如圖8.53所示。圖8.52輸入隱藏列的單元格地址圖8.53隱藏指定列(9)單擊工作表中的【取消隱藏指定列】按鈕,并且在彈出的輸入對話框中輸入單元格地址G7,單擊【確定】按鈕之后,單元格G7所在的列(第G行)將被取消隱藏。8.5單元格的查找如果要從工作表中的大量信息中尋找某一具體的數(shù)據(jù)信息,通常需要用到單元格的查找功能。本節(jié)將詳細講解在ExcelVBA中如何實現(xiàn)查找單元格的功能。8.5.1使用工作表函數(shù)進行查找在ExcelVBA中,使用工作表函數(shù)可以查找單元格。Excel中用于查找單元格的工作表函數(shù)主要有以下兩種。?Macth函數(shù):用于查找單元格的位置。?Vlookup函數(shù):用于查找并返回單元格的內(nèi)容。下面通過一個示例來講解如何使用這兩個函數(shù)來查找單元格。示例8-22使用工作表函數(shù)查找單元格(\代碼\第8章\8.5.1.xlsm)本示例實現(xiàn)的是當單擊工作表中的【查找位置】按鈕之后,將彈出一個輸入對話框,在該輸入對話框中輸入單元格的地址信息之后,將彈出一個提示對話框,顯示查找單元格所在的行數(shù)。當單擊【查找位置】按鈕時,在隨后彈出的輸入對話框中輸入要查找“貨物名稱”單元格所在的地址,然后單擊【確定】按鈕,此時將彈出一個提示對話框,在該對話框中將顯示所查找貨物名稱所對應的剩余數(shù)量信息。示例實現(xiàn)的具體步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境中添加一個模塊,并在模塊的代碼窗口中添加如下的程序代碼。'按照位置進行查找Sub查找位置()Dimsearchssearchs=InputBox("請輸入要查找的貨物名稱!","信息提示")DimSearchValuesSearchValues=Application.Match(Range(searchs),Range("A:A"),0)MsgBox"查找的結果在"&SearchValues&"行",vbSystemModal,"查找結果"EndSub'按照內(nèi)容進行查找Sub查找內(nèi)容()Dimsearchssearchs=InputBox("請輸入要查找的庫存數(shù)量!","信息提示")DimSearchValuesSearchValues=Application.VLookup(Range(searchs),Range("A:C"),3,0)MsgBox"所查貨物的剩余數(shù)量為"&SearchValues,vbSystemModal,"查找結果"EndSub(3)在工作表中分別添加2個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“查找位置”,將按鈕的顯示名稱修改為“查找位置”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“查找內(nèi)容”,將按鈕的顯示名稱修改為“查找內(nèi)容”,單擊【確定】按鈕。(4)在工作表中輸入如圖8.54所示的數(shù)據(jù)內(nèi)容。圖8.54工作表中的數(shù)據(jù)內(nèi)容(5)單擊工作表中的【查找位置】按鈕,在彈出的輸入對話框中輸入要查找單元格的地址A6,然后單擊【確定】按鈕,將彈出一個提示查找單元格所在行數(shù)的提示對話框窗口,如圖8.55所示。圖8.55查找單元格所在的位置(6)單擊工作表中的【查找內(nèi)容】按鈕,在彈出的輸入對話框中輸入要查找“貨物名稱”所在列的單元格地址,單擊【確定】按鈕,此時將彈出一個提示對話框,在該對話框中將顯示查找貨物名稱所對應的剩余數(shù)量信息,如圖8.56所示。圖8.56查找單元格的內(nèi)容8.5.2使用Find方法查找單元格在ExcelVBA當中,普遍使用的是使用Find方法來查找單元格。Find方法的結構如下所示。單元格地址范圍.Find(查找內(nèi)容,查找的開始位置,查找的范圍,單元格匹配,查找的方式,查找的類別,是否區(qū)分大小寫,是否區(qū)分全/半角)上述代碼中的各項參數(shù)如下所示。?查找內(nèi)容:是指查找數(shù)據(jù)的內(nèi)容。?查找的開始位置:查找的開始位置。默認為當前活動單元格位置,如果未指定,則從指定區(qū)域左上角開始查找。?查找的范圍:通常指的是查找公式、值或者備注??蔀閤lFormulas(公式)、xlValues(值)、xlComments(備注)和xlFindlookln常量之一。?單元格匹配:是指查找單元格的部分內(nèi)容還是全部內(nèi)容??蔀閤lPar(部分內(nèi)容)、xlWhole(內(nèi)容匹配)和XlLookAt常量之一。?查找的方式:指的是按行搜索還是按列搜索??蔀閤lByColumns(按列)或xlByRows(按行)X1SearchOrder常量之一。?查找的類別:可為xlNext或xlPreviousX1SearchDirection常量之一。XlPrevious是指查找前一個單元格。?是否區(qū)分大小寫:查找時是否區(qū)分大小寫。?是否區(qū)分全/半角:是指按照全角或半角的方式進行查找。下面通過一個示例進行講解。示例8-23使用Find方法查找單元格(\代碼\第8章\8.5.2.xlsm)本示例實現(xiàn)的是使用Find方法根據(jù)輸入單元格的地址來確定查找單元格所在的行數(shù)。示例實現(xiàn)的具體步驟如下所示。(1)新建一個Excel工作簿,進入到其VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境中添加一個模塊。(3)在模塊的代碼窗口中添加如下的程序代碼。'使用Find方法進行查找Sub查找()Dimsearchssearchs=InputBox("請輸入要查找的貨物名稱!","信息提示")DimSearchValuesSearchValues=Range("A:G").Find(Range(searchs)).RowMsgBox"查找的結果在"&SearchValues&"行",vbSystemModal,"查找結果"EndSub(4)在工作表中添加一個按鈕控件,在彈出的“指定宏”窗口中選擇宏“查找”,并且將按鈕的顯示名稱修改為“查找”,單擊【確定】按鈕。(5)在工作表"Sheet1"中輸入如圖8.57所示的數(shù)據(jù)信息,并且將添加的按鈕控件擺放到相應的位置。圖8.57在工作表中輸入的數(shù)據(jù)信息(6)單擊工作表中的【查找】按鈕,然后在彈出的輸入對話框中輸入要查找的單元格的地址B6,單擊【確定】按鈕,此時將彈出一個提示對話框,在該對話框中將顯示所查找單元格所在的行數(shù)信息,如圖8.58所示。圖8.58使用Find方法查找單元格信息8.6單元格的處理本節(jié)將講解有關Excel單元格的兩種常用的操作,即在ExcelVBA中,如何實現(xiàn)合并與拆分單元格和如何組合與取消組合單元格。8.6.1合并與拆分單元格在Excel的工作表當中,通過手動單擊【合并與拆分】按鈕可以實現(xiàn)對指定區(qū)域內(nèi)單元格的合并與拆分的功能,具體實現(xiàn)的方法如下所示。(1)打開Excel,在工作表中選取要合并單元格的區(qū)域。(2)在合并的單元格區(qū)域中單擊鼠標右鍵,將彈出一個工具欄及快捷菜單的窗口,如圖8.59所示。圖8.59合并選取區(qū)域的單元格(3)在如圖8.59所示的單元格中單擊【合并與拆分】按鈕,即可將選定的單元格區(qū)域合并,如圖8.60所示。圖8.60合并后的單元格(4)如果想拆分合并的單元格,則首先選中被合并的單元格,然后在該單元格上單擊鼠標右鍵,此時將彈出一個工具欄及快捷菜單的窗口,如圖8.61所示。圖8.61拆分選取的單元格(5)在如圖8.61所示的單元格中單擊【合并與拆分】按鈕,即可拆分選定的單元格,如圖8.62所示。圖8.62拆分后的單元格在ExcelVBA中,使用單元格對象的Merge方法可以實現(xiàn)合并單元格的操作;使用單元格對象的UnMerge方法可以實現(xiàn)拆分單元格的操作。下面通過示例進行詳細地講解。示例8-24合并與拆分單元格(\代碼\第8章\8.6.1.xlsm)本示例實現(xiàn)的是在工作表中單擊【合并單元格】按鈕之后,將彈出輸入對話框,在對話框中輸入要合并單元格區(qū)域的地址之后,單擊【確定】按鈕,將指定的單元格區(qū)域合并為一個單元格;在選中該合并的單元格之后,單擊工作表中的【拆分單元格】按鈕,也將會彈出輸入對話框,在對話框中輸入要拆分單元格區(qū)域的地址之后,單擊【確定】按鈕,將合并的單元格進行拆分,恢復到原來未合并單元格時的狀態(tài)。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,進入到VBE開發(fā)環(huán)境當中。(2)在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中分別添加如下的程序代碼。01Sub合并單元格()02OnErrorResumeNext03DimstartsAsString04DimendsAsString05starts=InputBox("請輸入合并單元格區(qū)域的起始單元格地址","提示信息")06ends=InputBox("請輸入合并單元格區(qū)域的終止單元格地址","提示信息")07'首先選取單元格08Range(starts,ends).Select09'合并單元格10Range(starts,ends).Merge11EndSub12Sub差分單元格()13OnErrorResumeNext14DimstartsAsString15DimendsAsString16starts=InputBox("請輸入拆分單元格區(qū)域的起始單元格地址","提示信息")17ends=InputBox("請輸入拆分單元格區(qū)域的終止單元格地址","提示信息")18'首先選取單元格19Range(starts,ends).Select20'拆分單元格21Range(starts,ends).UnMerge22EndSub在上述的第10行代碼中,使用Range對象的Merge方法合并選取指定的單元格區(qū)域;在第21行代碼中,使用Range對象的UnMerge方法拆分合并的單元格區(qū)域。(4)在工作表"Sheet1"中添加2個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“合并單元格”,將按鈕的顯示名稱修改為“合并單元格”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“拆分單元格”,將按鈕的顯示名稱修改為“拆分單元格”。(5)將鼠標離開按鈕控件,單擊【合并單元格】按鈕,在彈出的輸入對話框中輸入要合并單元格區(qū)域的起始地址D3,如圖8.63所示。圖8.63輸入合并單元格區(qū)域的起始地址(6)在圖8.63所示的輸入對話框中單擊【確定】按鈕之后,將再次彈出一個要求輸入合并單元格區(qū)域的對話框,在該對話框中輸入終止單元格的地址G9,如圖8.64所示。圖8.64輸入合并單元格區(qū)域的終止地址(7)在如圖8.64所示的輸入對話框窗口中單擊【確定】按鈕,則工作表中D3:G9單元格區(qū)域被合并為一個單元格,如圖8.65所示。圖8.65被合并后的單元格(8)在工作表中單擊【拆分單元格】按鈕之后,在彈出的輸入對話框中分別輸入要拆分單元格區(qū)域的起始地址D3和終止地址G9,在輸入對話框中單擊【確定】按鈕之后,指定的單元格區(qū)域將被拆分,如圖8.66所示。圖8.66拆分后的單元格8.6.2組合與取消組合單元格在ExcelVBA當中,使用單元格對象的Group方法可以實現(xiàn)組合單元格的操作;使用單元格對象的UnGroup方法可以實現(xiàn)取消組合單元格的操作。下面通過一個示例進行詳細地講解。示例8-25組合與取消組合單元格(\代碼\第8章\8.6.2.xlsm)本示例實現(xiàn)的是在工作表中單擊【組合單元格】按鈕,會將工作表中的C列和D列單元格進行組合。如果單擊【取消組合單元格】按鈕,將取消對C列和D列單元格的組合。示例實現(xiàn)的操作步驟如下所示。(1)新建一個Excel工作簿,在工作表"Sheet1"中添加示例所需要的數(shù)據(jù)信息。(2)進入到VBE環(huán)境當中。在VBE環(huán)境當中添加一個模塊,雙擊模塊進入到模塊的代碼窗口當中。(3)在模塊的代碼窗口中添加如下的程序代碼。01Sub組合單元格()02OnErrorResumeNext03'首先選取單元格04Range("C2","D2").Select05'組合單元格06Range("C2","D2").Group07EndSub08Sub取消組合單元格()09OnErrorResumeNext10'首先選取單元格11Range("C2","D2").Select12'取消組合單元格13Range("C2","D2").Ungroup14EndSub在上述的第6行代碼中,使用"Range"對象的"Group"方法組合指定的單元格;在第13行代碼中,使用"Range"對象的"Ungroup"方法取消組合指定的單元格。(4)在工作表"Sheet1"中添加2個按鈕控件,在“按鈕1”彈出的“指定宏”窗口中選擇宏“組合單元格”,將按鈕的顯示名稱修改為“組合單元格”;在“按鈕2”彈出的“指定宏”窗口中選擇宏“取消組合單元格”,將按鈕的顯示名稱修改為“取消組合單元格”。(5)將鼠標離開按鈕控件,單擊【組合單元格】按鈕,工作表中的C列和D列單元格將被組合,如圖8.67所示。圖8.67組合C列與D列單元格在如圖8.67所示的工作表界面中,單擊單元格組合控制區(qū)域中的“-”或“1”,可使組合的單元格折疊起來顯示。折疊后的工作表界面如圖8.68所示。組合的單元格在折疊以后,如果想展開,可以通過單擊單元格組合控制區(qū)域中的“+”或“2”來實現(xiàn),如圖8.68所示。圖8.68折疊起來的單元格(6)當組合的單元格區(qū)域處于展開顯示的狀態(tài)時(圖8.67所示的狀態(tài)),單擊工作表中的【取消組合單元格】按鈕,將取消對C列和D列單元格的組合,如圖8.69所示。圖8.69取消組合后的工作表界面8.7單元格的應用前面講解了與單元格相關的一些知識。為了使讀者更深一步地學習控制單元格的相關操作,更好地鞏固前面所學習的知識。本節(jié)將在向讀者介紹有關單元格操作的幾個

溫馨提示

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

最新文檔

評論

0/150

提交評論