VBA常用技巧-excel.doc_第1頁
VBA常用技巧-excel.doc_第2頁
VBA常用技巧-excel.doc_第3頁
VBA常用技巧-excel.doc_第4頁
VBA常用技巧-excel.doc_第5頁
已閱讀5頁,還剩602頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VBA常用技巧目錄VBA常用技巧1第1章Range(單元格)對象10技巧1單元格的引用方法101-1使用Range屬性101-2使用Cells屬性111-3使用快捷記號111-4使用Offset屬性121-5使用Resize屬性131-6使用Union方法141-7使用UsedRange屬性141-8使用CurrentRegion屬性15技巧2選定單元格區(qū)域的方法152-1使用Select方法152-2使用Activate方法162-3使用Goto方法17技巧3獲得指定行、列中的最后一個非空單元格17技巧4定位單元格20技巧5查找單元格215-1使用Find方法215-2使用Like運(yùn)算符25技巧6替換單元格內(nèi)字符串26技巧7復(fù)制單元格區(qū)域27技巧8僅復(fù)制數(shù)值到另一區(qū)域308-1使用選擇性粘貼308-2直接賦值的方法31技巧9單元格自動進(jìn)入編輯狀態(tài)32技巧10禁用單元格拖放功能32技巧11單元格格式操作3311-1單元格字體格式設(shè)置3311-2設(shè)置單元格內(nèi)部格式3511-3為單元格區(qū)域添加邊框3611-4靈活設(shè)置單元格的行高列寬38技巧12單元格中的數(shù)據(jù)有效性3912-1在單元格中建立數(shù)據(jù)有效性3912-2判斷單元格是否存在數(shù)據(jù)有效性4112-3動態(tài)的數(shù)據(jù)有效性4112-4自動展開數(shù)據(jù)有效性下拉列表43技巧13單元格中的公式4413-1在單元格中寫入公式4413-2檢查單元格是否含有公式4513-3判斷單元格公式是否存在錯誤4613-4取得單元格中公式的引用單元格4713-5將單元格中的公式轉(zhuǎn)換為數(shù)值48技巧14單元格中的批注4914-1判斷單元格是否存在批注4914-2為單元格添加批注5014-3刪除單元格中的批注51技巧15合并單元格操作5215-1判斷單元格區(qū)域是否存在合并單元格5215-2合并單元格時連接每個單元格的文本5315-3合并內(nèi)容相同的連續(xù)單元格5415-4取消合并單元格時在每個單元格中保留內(nèi)容56技巧16高亮顯示單元格區(qū)域57技巧17雙擊被保護(hù)單元格時不顯示提示消息框58技巧18重新計算工作表指定區(qū)域60技巧19錄入數(shù)據(jù)后單元格自動保護(hù)60技巧20工作表事件Target參數(shù)的使用方法6220-1使用單元格的Address 屬性6220-2使用Column屬性和Row屬性6320-3使用Intersect方法63第2章Worksheet(工作表)對象65技巧21引用工作表的方式6521-1使用工作表的名稱6521-2使用工作表的索引號6521-3使用工作表的代碼名稱6621-4使用ActiveSheet屬性引用活動工作表66技巧22選擇工作表的方法67技巧23遍歷工作表的方法6823-1使用For.Next 語句6823-2使用For Each.Next 語句70技巧24在工作表中上下翻頁71技巧25工作表的添加與刪除72技巧26禁止刪除指定工作表76技巧27自動建立工作表目錄78技巧28工作表的深度隱藏80技巧29防止更改工作表的名稱82技巧30工作表中一次插入多行83技巧31刪除工作表中的空行84技巧32刪除工作表的重復(fù)行86技巧33定位刪除特定內(nèi)容所在的行88技巧34判斷是否選中整行89技巧35限制工作表的滾動區(qū)域90技巧36復(fù)制自動篩選后的數(shù)據(jù)區(qū)域91技巧37使用高級篩選獲得不重復(fù)記錄93技巧38工作表的保護(hù)與解除保護(hù)94技巧39奇偶頁打印97第3章Wordbook(工作簿)對象99技巧40工作簿的引用方法9940-1使用工作簿的名稱9940-2使用工作簿的索引號9940-3使用ThisWorkbook10040-4使用ActiveWorkbook101技巧41新建工作簿文件101技巧42打開指定的工作簿103技巧43判斷指定工作簿是否打開10643-1遍歷Workbooks集合方法10643-2錯誤處理方法106技巧44禁用宏則關(guān)閉工作簿107技巧45關(guān)閉工作簿不顯示保存對話框11145-1使用Close方法關(guān)閉工作簿11145-2單擊工作簿關(guān)閉按鈕關(guān)閉工作簿113技巧46禁用工作簿的關(guān)閉按鈕113技巧47保存工作簿的方法11547-1使用Save方法11547-2直接保存為另一文件名11547-3保存工作簿副本115技巧48保存指定工作表為工作簿文件116技巧49打印預(yù)覽時不觸發(fā)事件118技巧50設(shè)置工作簿文檔屬性信息120技巧51不打開工作簿取得其他工作簿數(shù)據(jù)12151-1使用公式12151-2使用GetObject函數(shù)12251-3隱藏Application對象12351-4使用ExecuteExcel4Macro方法12451-5使用SQL連接125技巧52返回窗口的可視區(qū)域地址126第4章Shape(圖形)、Chart(圖表)對象128技巧53在工作表中添加圖形128技巧54導(dǎo)出工作表中的圖片133技巧55在工作表中添加藝術(shù)字135技巧56遍歷工作表中的圖形137技巧57移動、旋轉(zhuǎn)圖片139技巧58工作表中自動插入圖片140技巧59固定工作表中圖形的位置143技巧60使用VBA自動生成圖表145技巧61使用獨(dú)立窗口顯示圖表149技巧62導(dǎo)出工作表中的圖表150技巧63多圖表制作151第5章Application對象155技巧64取得Excel版本信息155技巧65取得當(dāng)前用戶名稱156技巧66Excel中的“定時器”156技巧67設(shè)置活動打印機(jī)的名稱158技巧68屏蔽、改變組合鍵的功能159技巧69設(shè)置Excel窗口標(biāo)題欄160技巧70自定義Excel狀態(tài)欄161技巧71靈活退出Excel162技巧72隱藏Excel主窗口16372-1設(shè)置Application對象的Visible屬性16372-2將窗口移出屏幕16472-3設(shè)置工作簿作為加載宏運(yùn)行165第6章使用對話框167技巧73使用Msgbox函數(shù)16773-1顯示簡單的提示信息16773-2定制個性化的消息框16873-3獲得消息框的返回值16973-4在消息框中排版17173-5對齊消息框中顯示的信息172技巧74自動關(guān)閉的消息框17474-1使用WshShell.Popup方法顯示消息框17474-2使用API函數(shù)顯示消息框175技巧75使用InputBox函數(shù)17675-1簡單的數(shù)據(jù)輸入17675-2使用對話框輸入密碼178技巧76使用InputBox方法18076-1輸入指定類型的數(shù)據(jù)18076-2獲得單元格區(qū)域地址182技巧77內(nèi)置對話框18377-1調(diào)用內(nèi)置的對話框18377-2獲取選定文件的文件名18677-3使用“另存為”對話框188技巧78調(diào)用操作系統(tǒng)“關(guān)于”對話框190第7章菜單和工具欄192技巧79在菜單中添加菜單項192技巧80在菜單欄指定位置添加菜單195技巧81屏蔽和刪除工作表菜單197技巧82改變系統(tǒng)菜單的操作198技巧83定制自己的系統(tǒng)菜單199技巧84改變菜單按鈕圖標(biāo)205技巧85右鍵快捷菜單增加菜單項206技巧86自定義右鍵快捷菜單207技巧87使用右鍵菜單制作數(shù)據(jù)有效性210技巧88禁用工作表右鍵菜單212技巧89創(chuàng)建自定義工具欄213技巧90自定義工具欄按鈕圖標(biāo)216技巧91自定義工作簿圖標(biāo)217技巧92移除工作表的最小最大化和關(guān)閉按鈕218技巧93在工具欄上添加下拉列表框219技巧94屏蔽工作表的復(fù)制功能221技巧95禁用工具欄的自定義222技巧96屏蔽所有的命令欄225技巧97恢復(fù)Excel的命令欄226第8章控件與用戶窗體228技巧98限制文本框的輸入228技巧99文本框添加右鍵快捷菜單230技巧100文本框回車自動輸入234技巧101自動選擇文本框內(nèi)容235技巧102設(shè)置文本框數(shù)據(jù)格式236技巧103限制文本框的輸入長度238技巧104將光標(biāo)返回文本框中239技巧105文本框的自動換行241技巧106多個文本框數(shù)據(jù)相加243技巧107控件跟隨活動單元格244技巧108高亮顯示按鈕245技巧109組合框和列表框添加列表項的方法247109-1使用RowSource屬性添加列表項247109-2使用List屬性添加列表項248109-3使用AddItem方法添加列表項249技巧110去除列表框數(shù)據(jù)源的重復(fù)值和空格251技巧111移動列表框條目253技巧112允許多項選擇的列表框256技巧113多列組合框和列表框的設(shè)置259113-1多列組合框和列表框添加列表項259113-2多列列表框?qū)懭牍ぷ鞅?61技巧114輸入時逐步提示信息263技巧115二級組合框270技巧116使用DTP控件輸入日期272技巧117使用RefEdit控件選擇區(qū)域275技巧118如何注冊控件276技巧119遍歷控件的方法279119-1使用名稱中的變量遍歷控件279119-2使用對象類型遍歷控件281119-3使用程序標(biāo)識符遍歷控件282119-4使用名稱中的變量遍歷圖形283119-5使用FormControlType屬性遍歷圖形284技巧120使微調(diào)框最小變動量小于1285技巧121不打印工作表中的控件287121-1設(shè)置控件格式287121-2設(shè)置控件的printobjcet屬性289技巧122在框架中使用滾動條289技巧123使用多頁控件291技巧124標(biāo)簽文字垂直居中對齊293技巧125使用TabStrip控件295技巧126顯示GIF動畫圖片297技巧127播放Flash文件300技巧128在工作表中添加窗體控件302128-1使用AddFormControl方法303128-2使用Add方法305技巧129在工作表中添加ActiveX控件307129-1使用Add方法308129-2使用AddOLEObject方法310技巧130使用spreadsheet控件311技巧131使用Listview控件314131-1使用Listview控件顯示數(shù)據(jù)列表314131-2在Listview控件中使用復(fù)選框317131-3調(diào)整Listview控件的行距319131-4在Listview控件中排序322131-5Listview控件的圖標(biāo)設(shè)置323技巧132調(diào)用非模式窗體326技巧133進(jìn)度條的制作328133-1使用進(jìn)度條控件328133-2使用標(biāo)簽控件330技巧134使用TreeView控件顯示層次333技巧135用戶窗體添加圖標(biāo)337技巧136用戶窗體添加最大最小化按紐339技巧137禁用窗體標(biāo)題欄的關(guān)閉按鈕340技巧138屏蔽窗體標(biāo)題欄的關(guān)閉按鈕341技巧139無標(biāo)題欄和邊框的窗體343技巧140制作年月選擇窗體344技巧141自定義窗體中的鼠標(biāo)指針類型347技巧142調(diào)整窗體的顯示位置348技巧143由鼠標(biāo)確定窗體顯示位置350技巧144用戶窗體的打印351技巧145使用自定義顏色設(shè)置窗體顏色353技巧146在窗體中顯示圖表354146-1使用Export方法354146-2使用API函數(shù)356技巧147窗體運(yùn)行時調(diào)整控件大小357技巧148在用戶窗體上添加菜單360技巧149在用戶窗體上添加工具欄364技巧150使用代碼添加窗體及控件369技巧151用戶窗體的全屏顯示375151-1設(shè)置用戶窗體為應(yīng)用程序的大小375151-2根據(jù)屏幕分辨率進(jìn)行設(shè)置376技巧152在用戶窗體上添加狀態(tài)欄377第9章函數(shù)的使用381技巧153調(diào)用工作表函數(shù)求和381技巧154查找最大、最小值381技巧155不重復(fù)值的錄入383技巧156獲得當(dāng)月的最后一天385技巧157四舍五入運(yùn)算386157-1極小值修正法386157-2調(diào)用工作表函數(shù)法387技巧158使用字符串函數(shù)387技巧159使用日期函數(shù)389技巧160判斷是否為數(shù)值393技巧161格式化數(shù)值、日期和時間394技巧162個人所得稅自定義函數(shù)396技巧163人民幣大寫函數(shù)398技巧164列號轉(zhuǎn)換為列標(biāo)400技巧165判斷工作表是否為空表401技巧166查找指定工作表402技巧167查找指定工作簿是否打開404技巧168取得應(yīng)用程序的安裝路徑404技巧169數(shù)組的使用406169-1代碼運(yùn)行時創(chuàng)建數(shù)組406169-2文本轉(zhuǎn)換為數(shù)組407169-3使用動態(tài)數(shù)組去除重復(fù)值409第10章文件操作412技巧170導(dǎo)入文本文件412170-1使用查詢表導(dǎo)入412170-2使用Open 語句導(dǎo)入413170-3使用OpenText方法415技巧171將數(shù)據(jù)寫入文本文件416171-1使用Print # 語句416171-2另存為文本文件418技巧172文件修改的日期和時間419技巧173查找文件或文件夾420技巧174獲得當(dāng)前文件夾的名稱422技巧175創(chuàng)建和刪除文件夾422技巧176重命名文件或文件夾423技巧177復(fù)制指定的文件424技巧178刪除指定的文件425技巧179搜索特定的文件426技巧180使用WSH處理文件428180-1獲取文件信息428180-2查找文件430180-3移動文件431180-4復(fù)制文件431180-5刪除文件432180-6創(chuàng)建文件夾433180-7復(fù)制文件夾434180-8移動文件夾435180-9刪除文件夾435180-10導(dǎo)入文本文件436180-11創(chuàng)建文本文件438第11章其他應(yīng)用441技巧181取得電腦名稱441技巧182取得邏輯盤序列號442技巧183使用API取得硬盤信息443技巧184使用數(shù)字簽名444技巧185暫停代碼的運(yùn)行449技巧186定時關(guān)機(jī)450技巧187打開指定的網(wǎng)頁451技巧188VBE的操作452188-1添加模塊和過程452188-2建立事件過程454188-3模塊的導(dǎo)入與導(dǎo)出456188-4刪除宏代碼457技巧189保護(hù)VBA代碼459189-1設(shè)置工程密碼459189-2設(shè)置“工程不可查看”460技巧190優(yōu)化代碼462190-1關(guān)閉屏幕刷新462190-2使用工作表函數(shù)464190-3使用更快的單元格操作方法465190-4使用With語句引用對象466190-5少用激活或選擇語句468技巧191取得文件的基本名稱469技巧192防止用戶中斷代碼運(yùn)行470技巧193加班費(fèi)計算表472技巧194制作發(fā)放條498技巧195費(fèi)用統(tǒng)計表501技巧196職工花名冊516技巧197收據(jù)系統(tǒng)529技巧198職工考勤系統(tǒng)567第1章 Range(單元格)對象Range對象是Excel應(yīng)用程序中最常用的對象,一個Range對象代表一個單元格、一行、一列、包含一個或者更多單元格區(qū)域(可以是連續(xù)的單元格,也可以是不連續(xù)的單元格)中選定的單元格,甚至是多個工作表上的一組單元格,在操作Excel 內(nèi)的任何區(qū)域之前都需要將其表示為一個Range對象,然后使用該Range對象的方法和屬性。技巧1 單元格的引用方法在VBA中經(jīng)常需要引用單元格或單元格區(qū)域區(qū)域,主要有以下幾種方法。1-1 使用Range屬性VBA中可以使用Range屬性返回單元格或單元格區(qū)域,如下面的代碼所示。#001 Sub RngSelect() #002 Sheet1.Range(A3:F6, B1:C5).Select#003 End Sub代碼解析:RngSelect過程使用Select方法選中A3:F6,B1:C5單元格區(qū)域。Range屬性返回一個Range對象,該對象代表一個單元格或單元格區(qū)域,語法如下:Range(Cell1, Cell2)參數(shù)Cell1是必需的,必須為 A1 樣式引用的宏語言,可包括區(qū)域操作符(冒號)、相交區(qū)域操作符(空格)或合并區(qū)域操作符(逗號)。也可包括美元符號(即絕對地址,如“$A$1”)??稍趨^(qū)域中任一部分使用局部定義名稱,如Range(B2:LastCell),其中LastCell為已定義的單元格區(qū)域名稱。參數(shù)Cell2是可選的,區(qū)域左上角和右下角的單元格。運(yùn)行Sub RngSelect過程,選中A3:F6, B1:C5單元格區(qū)域,如圖 11所示。圖 11使用Range屬性引用單元格區(qū)域注意 如果沒有使用對象識別符,Range屬性返回活動表的一個區(qū)域,如果活動表不是工作表,則該屬性無效。1-2 使用Cells屬性使用Cells屬性返回一個Range對象,如下面的代碼所示。#001 Sub Cell()#002 Dim icell As Integer#003 For icell = 1 To 100#004 Sheet2.Cells(icell, 1).Value = icell#005 Next#006 End Sub代碼解析:Cell過程使用For.Next語句為工作表中的A1:A100單元格區(qū)域填入序號。Cells屬性指定單元格區(qū)域中的單元格,語法如下:Cells(RowIndex, ColumnIndex)參數(shù)RowIndex是可選的,表示引用區(qū)域中的行序號。參數(shù)ColumnIndex是可選的,表示引用區(qū)域中的列序號。如果缺省參數(shù),Cells屬性返回引用對象的所有單元格。Cells屬性的參數(shù)可以使用變量,因此經(jīng)常應(yīng)用于在單元格區(qū)域中循環(huán)。1-3 使用快捷記號在VBA中可以將A1引用樣式或命名區(qū)域名稱使用方括號括起來,作為Range屬性的快捷方式,這樣就不必鍵入單詞“Range”或使用引號,如下面的代碼所示。#001 Sub Fastmark()#002 A1:A5 = 2#003 Fast = 4#004 End Sub代碼解析:Fastmark過程使用快捷記號為單元格區(qū)域賦值。第2行代碼使用快捷記號將活動工作表中的A1:A5單元格賦值為2。第3行代碼將工作簿中已命名為“Fast”的單元格區(qū)域賦值為4。注意 使用快捷記號引用單元格區(qū)域時只能使用固定字符串而不能使用變量。1-4 使用Offset屬性可以使用Range對象的Offset屬性返回一個基于引用的Range對象的單元格區(qū)域,如下面的代碼所示。#001 Sub Offset()#002 Sheet3.Range(A1:C3).Offset(3, 3).Select#003 End Sub代碼解析:Offset過程使用Range對象的Offset屬性選中A1:A3單元格偏移三行三列后的區(qū)域。應(yīng)用于Range對象的Offset 屬性的語法如下:expression.Offset(RowOffset, ColumnOffset)參數(shù)expression是必需的,該表達(dá)式返回一個Range對象。參數(shù)RowOffset是可選的,區(qū)域偏移的行數(shù)(正值、負(fù)值或 0(零)。正值表示向下偏移,負(fù)值表示向上偏移,默認(rèn)值為 0。參數(shù)ColumnOffset是可選的,區(qū)域偏移的列數(shù)(正值、負(fù)值或 0(零)。正值表示向右偏移,負(fù)值表示向左偏移,默認(rèn)值為 0。運(yùn)行Offset過程,選中A1:A3單元格偏稱三行三列后的區(qū)域,如圖 12所示。圖 12使用Range對象的Offset屬性1-5 使用Resize屬性使用Range對象的Resize屬性調(diào)整指定區(qū)域的大小,并返回調(diào)整大小后的單元格區(qū)域,如下面的代碼所示。#001 Sub Resize()#002 Sheet4.Range(A1).Resize(3, 3).Select#003 End Sub代碼解析:Resize過程使用Range對象的Resize屬性選中A1單元格擴(kuò)展為三行三列后的區(qū)域。Resize屬性的語法如下:expression.Resize(RowSize, ColumnSize)參數(shù)expression是必需的,返回要調(diào)整大小的Range 對象參數(shù)RowSize是可選的,新區(qū)域中的行數(shù)。如果省略該參數(shù),則該區(qū)域中的行數(shù)保持不變。參數(shù)ColumnSize是可選的,新區(qū)域中的列數(shù)。如果省略該參數(shù)。則該區(qū)域中的列數(shù)保持不變。運(yùn)行Resize過程,選中A1單元格擴(kuò)展為三行三列后的區(qū)域,如圖 13所示。圖 13使用Resize屬性調(diào)整區(qū)域大小1-6 使用Union方法使用Union方法可以將多個非連續(xù)區(qū)域連接起來成為一個區(qū)域,從而可以實現(xiàn)對多個非連續(xù)區(qū)域一起進(jìn)行操作,如下面的代碼所示。#001 Sub UnSelect()#002 Union(Sheet5.Range(A1:D4), Sheet5.Range(E5:H8).Select#003 End Sub代碼解析:UnSelect過程選擇單元格A1:D4和E5:H8所組成的區(qū)域。Union方法返回兩個或多個區(qū)域的合并區(qū)域,語法如下:expression.Union(Arg1, Arg2, .)其中參數(shù)expression是可選的,返回一個Application對象。參數(shù)Arg1, Arg2, .是必需的,至少指定兩個Range對象。運(yùn)行UnSelect過程,選中單元格A1:D4和E5:H8所組成的區(qū)域,如圖 14所示。圖 14使用Union方法將多個非連續(xù)區(qū)域連接成一個區(qū)域1-7 使用UsedRange屬性使用UsedRange屬性返回指定工作表上已使用單元格組成的區(qū)域,如下面的代碼所示。#001 Sub UseSelect()#002 Sheet6.UsedRange.Select#003 End Su代碼解析:UseSelect過程使用UsedRange屬性選擇工作表上已使用單元格組成的區(qū)域,包括空單元格。如工作表中已使用A1單元格和D8單元格,運(yùn)行UseSelect過程將選擇A1到D8單元格區(qū)域,如圖 15所示。圖 15使用UsedRange屬性選擇已使用區(qū)域1-8 使用CurrentRegion屬性使用CurrentRegion屬性返回指定工作表上當(dāng)前的區(qū)域,如下面的代碼所示。#001 Sub CurrentSelect()#002 Sheet7.Range(A5).CurrentRegion.Select#003 End Sub代碼解析:CurrentSelect過程使用CurrentRegion屬性選擇工作表上A5單元格當(dāng)前的區(qū)域,當(dāng)前區(qū)域是一個邊緣是任意空行和空列組合成的范圍。運(yùn)行CurrentSelect過程將選擇A5到B6單元格區(qū)域,如圖 16所示。圖 16CurrentRegion屬性選擇當(dāng)前的區(qū)域技巧2 選定單元格區(qū)域的方法2-1 使用Select方法在VBA中一般使用Select方法選定單元格或單元格區(qū)域,如下面的代碼所示。#001 Sub RngSelect()#002 Sheet3.Activate#003 Sheet3.Range(A1:B10).Select#004 End Sub代碼解析:RngSelect過程使用Select方法選定Sheet3中的A1:B10單元格區(qū)域,Select方法應(yīng)用于Range對象時語法如下:expression.Select(Replace)參數(shù)expression是必需的,一個有效的對象。參數(shù)Replace是可選的,要替換的對象。使用Select方法選定單元格時,單元格所在的工作表必需為活動工作表,所以在第2行代碼中先使用Activate方法使Sheet3成為活動工作表,否則Select方法有可能出錯,顯示如圖 21所示的錯誤提示。圖 21Select方法無效提示2-2 使用Activate方法還可以使用Activate方法選定單元格或單元格區(qū)域,如下面的代碼所示。#001 Sub RngActivate()#002 Sheet3.Activate#003 Sheet3.Range(A1:B10).Activate#004 End Sub代碼解析:RngActivate過程使用Activate方法選定Sheet3中的A1:B10單元格區(qū)域,Activate方法應(yīng)用于Range對象時語法如下:expression.Activate使用Activate方法選定單元格時,單元格所在的工作表也必需為活動工作表,否則Activate方法有可能出錯,顯示如圖 22所示的錯誤提示。圖 22Activate方法無效提示2-3 使用Goto方法使用Goto方法無需使單元格所在的工作表成為活動工作表,如下面的代碼所示。#001 Sub RngGoto()#002 Application.Goto Reference:=Sheet3.Range(A1:B10), scroll:=True#003 End Sub代碼解析:RngGoto過程使用Goto方法選定Sheet3中的A1:B10單元格區(qū)域,并滾動工作表以顯示該單元格。Goto方法選定任意工作簿中的任意區(qū)域或任意Visual Basic過程,并且如果該工作簿未處于活動狀態(tài),就激活該工作簿,語法如下:expression.Goto(Reference, Scroll)參數(shù)expression是必需的,返回一個Application 對象。參數(shù)Reference是可選的,Variant類型,指定目標(biāo)??梢允荝ange對象、包含R1C1-樣式記號的單元格引用的字符串或包含 Visual Basic 過程名的字符串。如果省略本參數(shù),目標(biāo)將是最近一次用Goto方法選定的區(qū)域。參數(shù)Scroll是可選的,Variant類型,如果該值為True,則滾動窗口直至目標(biāo)區(qū)域的左上角單元格出現(xiàn)在窗口的左上角。如果該值為False,則不滾動窗口。默認(rèn)值為False。技巧3 獲得指定行、列中的最后一個非空單元格使用VBA對工作表進(jìn)行操作時,經(jīng)常需要定位到指定行或列中最后一個非空單元格,此時可以使用Range對象的End屬性,在取得單元格對象后便能獲得該單元格的相關(guān)屬性,如單元格地址、行列號、數(shù)值等,如下面的代碼所示。#001 Sub LastRow()#002 Dim rng As Range#003 Set rng = Sheet1.Range(A65536).End(xlUp)#004 MsgBox A列中最后一個非空單元格是 & rng.Address(0, 0) _#005 & ,行號 & rng.Row & ,數(shù)值 & rng.Value#006 Set rng = Nothing#007 End Sub代碼解析:LastRow過程使用消息框顯示工作表中A列最后非空單元格的地址、行號和數(shù)值。End屬性返回一個Range對象,該對象代表包含源區(qū)域的區(qū)域尾端的單元格。等同于按鍵、或,語法如下:expression.End(Direction)參數(shù)expression是必需的,一個有效的對象。參數(shù)Direction是可選的,所要移動的方向,可以為表格 31所示的XlDirection 常量之一。常量值描述xlDown-4121向下xlToRight-4161向右xlToLeft-4159向左xlUp-4162向上表格 31XlDirection 常量Range對象的End屬性返回的是一個Range對象,因此可以直接使用該對象的屬性和方法。運(yùn)行LastRow過程結(jié)果如圖 31所示。圖 31獲得A列最后一個非空單元格通過修改相應(yīng)的參數(shù),能夠獲得指定行中最后一個非空單元格,如下面的代碼所示。#001 Sub LastColumn()#002 Dim rng As Range#003 Set rng = Sheet1.Range(IV1).End(xlToLeft)#004 MsgBox 第一行中最后一個非空單元格是 & rng.Address(0, 0) _#005 & ,列號 & rng.Column & ,數(shù)值 & rng.Value#006 Set rng = Nothing#007 End Sub代碼解析:LastColumn過程使用消息框顯示工作表中第一行最后一個非空單元格的地址、列號和數(shù)值,如圖 32所示。圖 32獲得第一行最后一個非空單元格技巧4 定位單元格在Excel中使用定位對話框可以選中工作表中特定的單元格區(qū)域,而在VBA中則使用SpecialCells方法,如下面的代碼所示。#001 Sub SpecialAddress()#002 Dim rng As Range#003 Set rng = Sheet1.UsedRange.SpecialCells(xlCellTypeFormulas)#004 rng.Select#005 MsgBox 工作表中有公式的單元格為: & rng.Address#006 Set rng = Nothing#007 End Sub代碼解析:SpecialAddress過程使用SpecialCells方法選中工作表中有公式的單元格,并用消息框顯示其地址。SpecialCells方法返回一個Range對象,該對象代表與指定類型及值相匹配的所有單元格,語法如下:expression.SpecialCells(Type, Value)參數(shù)expression是必需的,返回一個有效的對象。參數(shù)Type是必需的,要包含的單元格,可為表格 41所列的XlCellType常量之一。常量值描述xlCellTypeAllFormatConditions-4172任意格式單元格xlCellTypeAllValidation-4174含有驗證條件的單元格xlCellTypeBlanks4空單元格xlCellTypeComments-4144含有注釋的單元格xlCellTypeConstants2含有常量的單元格xlCellTypeFormulas-4123含有公式的單元格xlCellTypeLastCell11使用區(qū)域中最后的單元格xlCellTypeSameFormatConditions-4173含有相同格式的單元格xlCellTypeSameValidation-4175含有相同驗證條件的單元格xlCellTypeVisible12所有可見單元格表格 41XlCellType常量第3行代碼將SpecialCells方法的Type參數(shù)設(shè)置為xlCellTypeFormulas,返回的是含有公式的單元格,通過修改相應(yīng)的參數(shù)可以返回不同的單元格。參數(shù)Value是可選的,如果Type參數(shù)為xlCellTypeConstants或xlCellTypeFormulas, 此參數(shù)可用于確定結(jié)果中應(yīng)包含哪幾類單元格。將某幾個值相加可使此方法返回多種類型的單元格。如果省略將選定所有常量或公式,可為表格 42所列的 XlSpecialCellsValue常量之一。常量值描述xlErrors16錯誤xlLogical4邏輯值xlNumbers1數(shù)字xlTextValues2文本表格 42XlSpecialCellsValue常量第5行代碼使用消息框顯示工作表中含有公式單元格的地址。SpecialCells方法返回的是Range對象,因此可以直接使用該對象的屬性和方法。運(yùn)行SpecialAddress過程結(jié)果如圖 41所示。圖 41SpecialCells方法技巧5 查找單元格5-1 使用Find方法在Excel中使用查找對話框可以查找工作表中特定內(nèi)容的單元格,而在VBA中則使用Find方法,如下面的代碼所示。#001 Sub RngFind()#002 Dim StrFind As String#003 Dim Rng As Range#004 StrFind = InputBox(請輸入要查找的值:)#005 If Trim(StrFind) Then#006 With Sheet1.Range(A:A)#007 Set Rng = .Find(What:=StrFind, _#008 After:=.Cells(.Cells.Count), _#009 LookIn:=xlValues, _#010 LookAt:=xlWhole, _#011 SearchOrder:=xlByRows, _#012 SearchDirection:=xlNext, _#013 MatchCase:=False)#014 If Not Rng Is Nothing Then#015 Application.Goto Rng, True#016 Else#017 MsgBox 沒有找到該單元格!#018 End If#019 End With#020 End If#021 End Sub代碼解析:RngFind過程使用Find方法在工作表Sheet1的A列中查找InputBox函數(shù)對話框中所輸入的值,并查找該值所在的第一個單元格。第6到第13行代碼在工作表Sheet1的A列中查找InputBox函數(shù)對話框中所輸入的值。應(yīng)用于Range對象的Find方法在區(qū)域中查找特定信息,并返回Range對象,該對象代表用于查找信息的第一個單元格。如果未發(fā)現(xiàn)匹配單元格,就返回Nothing,語法如下:expression.Find(What, After, LookIn, LookAt, SearchOrder, SearchDirection, MatchCase, MatchByte, SerchFormat)參數(shù)expression是必需的,該表達(dá)式返回一個Range對象。參數(shù)What是必需的,要搜索的數(shù)據(jù),可為字符串或任意數(shù)據(jù)類型。參數(shù)After是可選的,表示搜索過程將從其之后開始進(jìn)行的單元格,必須是區(qū)域中的單個單元格。查找時是從該單元格之后開始的,直到本方法繞回到指定的單元格時,才對其進(jìn)行搜索。如果未指定本參數(shù),搜索將從區(qū)域的左上角單元格之后開始。在本例中將After參數(shù)設(shè)置為A列的最后一個單元格,所以查找時從A1單元格開始搜索。參數(shù)LookIn是可選的,信息類型。參數(shù)LookAt是可選的,可為XlLookAt常量的xlWhole 或xlPart之一。參數(shù)SearchOrder是可選的,可為XlSearchOrder常量的xlByRows或xlByColumns之一。參數(shù)SearchDirection是可選的,搜索的方向,可為XlSearchDirection常量的xlNext或xlPrevious之一。參數(shù)MatchCase是可選的,若為True,則進(jìn)行區(qū)分大小寫的查找。默認(rèn)值為False。參數(shù)MatchByte是可選的,僅在選擇或安裝了雙字節(jié)語言支持時使用。若為True,則雙字節(jié)字符僅匹配雙字節(jié)字符。若為False,則雙字節(jié)字符可匹配其等價的單字節(jié)字符。參數(shù)SerchFormat是可選的,搜索的格式。每次使用Find方法后,參數(shù)LookIn、LookAt、SearchOrder 和MatchByte的設(shè)置將保存。如果下次調(diào)用Find方法時不指定這些參數(shù)的值,就使用保存的值。因此每次使用該方法時請明確設(shè)置這些參數(shù)。如果工作表的A列中存在重復(fù)的數(shù)值,那么需要使用FindNext方法或FindPrevious方法進(jìn)行重復(fù)搜索,如下面的代碼所示。#001 Sub RngFindNext()#002 Dim StrFind As String#003 Dim Rng As Range#004 Dim FindAddress As String#005 StrFind = InputBox(請輸入要查找的值:)#006 If Trim(StrFind) Then#007 With Sheet1.Range(A:A)#008 Set Rng = .Find(What:=StrFind, _#009 After:=.Cells(.Cells.Count), _#010 LookIn:=xlValues, _#011 LookAt:=xlWhole, _#012 SearchOrder:=xlByRows, _#013 SearchDirection:=xlNext, _#014 MatchCase:=False)#015 If Not Rng Is Nothing Then#016 FindAddress = Rng.Address#017 Do#018 Rng.Interior.ColorIndex = 6#019 Set Rng = .FindNext(Rng)#020 Loop While Not Rng Is Nothing And Rng.Address FindAddress#021 End If#022 End With#023 End If#024 End Sub代碼解析:RngFindNext過程在工作表Sheet1的A列中查找InputBox函數(shù)對話框中所輸入

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論