




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、單元格在VBA的表示方法:1、Range(單元格地址) 如Range(a1) 即為A1單元格2、CELLS(行,列) 如CELLS(1,1)也為A1單元格,CELLS(2,1)為 A2單元格工作表在VBA中表示方法:sheets(工作表名)每個函數(shù)前都要加Application.WorksheetFunction.?答:如果是單個調(diào)用必須加如果是多個調(diào)用就可以用WITH語句省去后面的如Sub 矩形1_單擊()Dim i As IntegerFor i = 1 To 20Sheets(sheet1).Cells(i, 1) = iNextWith Application.WorksheetFun
2、ctionRange(a21).Value = .Sum(Range(a1:a20)注意SUM前面要有個點才行Range(a22).Value = .Average(Range(a1:a20)End WithEnd SubCOLUMN是指列,COLUMNS是指列的集合ROW是表示行,ROWS是行的集合如果用Sheets(sheet1).columns.select 會選定所有列即整個工作表SUB 語句,需要有個事件觸發(fā)它,才能執(zhí)行,就比如一個箱子,只有去搬、推等外力施加與它時,它才會動。設(shè)置個按紐目的就是為了執(zhí)行SUB語句Range(A1:A22).ClearContents該語句是清除內(nèi)容的
3、語句Private 的中文意思是私有的,Private Sub中的程序只能在本程序內(nèi)部運行而不能被其他程序調(diào)用,而SUB語句則可以如:SUB BB() END SUBSUB AA() BB END SUBRange(B65536).End(xlUp).Row是指B列最后一個非空單元格,END(XLUP)是向上數(shù)第一個非空單元格,為了準備找到最下面的非空單元格,當然要從RANGE(B65536)開始向上找了MSGBOX 有時帶()比如AAA=MSGBOX()這種情況下可以取到用戶點擊對話框按紐的返回值,以確定下一步該怎么做而不帶括號只是提示的作用,不能取得返回的值如MSGBOX .以下是引用pl
4、aygirl在2004-10-5 15:18:00的發(fā)言: 那為為什么要用K=K+1。如果向下數(shù)第一個非空單元格就是range(b1).end(xldown).row向左數(shù)第一個非空單元格:range(iv1).end(xlleft).column向右數(shù)第一個非空單元格:range(a1).end(xlright).column是這樣嗎?謝謝!向右是End(xltoright)向左End(xltoleft)K=K+1是在原來的基礎(chǔ)加1如選取Sheet1第一行有內(nèi)容單元格區(qū)域(假設(shè)A1不為空):sheets(sheet1).range(a1,range(a1).end(xltoright).se
5、lect選取B列有內(nèi)容單元格區(qū)域:(假設(shè)B1不為空):sheets(sheet1).range(B1,range(B65536).end(XLUP).select以下是引用老荷才露在2004-10-5 16:30:00的發(fā)言: a = Application.WorksheetFunction.CountIf(Range(b:b), 106)If a 1 ThenMsgBox 大于106的數(shù)有 & a & 個, 1最后這個,1 怎么解釋;a 這個變量是不是省略了dim的聲明,不聲明也行嗎?蘭老師的最后一句中的 1+64,怎么解釋其實這個程序是加了個判斷,如果統(tǒng)計的結(jié)果有106的值(即A1)就顯
6、示提示對話框,否則就不顯示,1+64參考下面的貼子:變量在程序中如果事先約定,就必須聲明,如果沒有約定,就根據(jù)實際情況而定,一般來說聲明最好,這樣可以減少運行程序所占用的內(nèi)存.注:約定:相關(guān)圖片如下(VBE編輯器-工具-選項)此主題相關(guān)圖片如下:Function panduan(aa As Range)If aa.Value 0 Thenpanduan = 大于零ElseIf aa.Value = 0 Thenpanduan = 等于零Elsepanduan = 小于零End IfEnd FunctionFunction panduan(aa As Range)panduan即是你定義的函數(shù)名
7、稱,就如IF,MATCT等函數(shù)名稱一樣(aa As Range) aa是該函數(shù)的參數(shù),aa As Range是定義該參數(shù)為單元格,在本例中是要判斷正負或零的引用單元格即=panduan(A1)中的A1If aa.Value 0 Thenpanduan = 大于零是對引用單元格aa的值進行判斷,把判斷的結(jié)果返回給該函數(shù)所在單元格在下面兩句中間輸入Workbooks后再輸入個點(.),就會出現(xiàn)一個下拉框,框中的帶小手指的就是工作薄集合的屬性,帶飛行的小書本的是方法,比如:新建(ADD),關(guān)閉(CLOSE),打開(OPEN)就是方法MsgBox是VBA中的一個函數(shù).可以以對話框形式顯示或返回信息,如
8、:當你在關(guān)閉工作薄時的提示 當你在刪除工作表時出現(xiàn)的提示一次新建多個工作薄:For i = 10 To 13Workbooks.AddActiveWorkbook.SaveAs Filename:=c: & i & .xlsNext可以了.新建四個工作表 名字分別為(10-13).XLS .SaveAs 什么意思?對工作簿的修訂保存到另一個不同的文件。Workbooks.close是關(guān)閉所有打開的工作薄Workbooks(123,XLS).close是關(guān)閉指定的工作薄以上討論了工作薄的新建,保存和統(tǒng)計,做個練習(xí)怎么知道文件是隱藏后綴?我目前有兩打開的文件,一個直接顯示BOOK6沒有擴展名,一個
9、是BOOK2.XLS是怎么回事?ByVal是通常用來表示某個自變量將以傳值(一種以傳遞自變量值給程序的方式,讓程序取得變量的值,注:變量的值將不會被程序所更改)的方式傳值上例中:Private Sub Workbook_NewSheet(ByVal Sh As Object)Application.DisplayAlerts = FalseSh.DeleteApplication.DisplayAlerts = TrueEnd Sub把新增加的工作表作為變量傳給程序(ByVal Sh As Object),程序中Sh.Delete才能運行,Sh即為新插入的工作表,(ByVal Sh As Ob
10、ject)是系統(tǒng)自動提供的,不能更改工作表SHEETS的屬性和方法很多,介紹幾個常用的Sheets.Count工作薄中工作表的數(shù)量Sheets(1).name返回第一個工作表的名子sheets(sheet1).activate設(shè)置sheet1為活動工作薄sheets(sheet1).Delete 刪除sheet1Sheets(SHEET1).Move AFTER:=Sheets(Sheets.Count) 把Sheet1移到最后sheets(sheet1).Protect PASSWORD:=123保護工作表sheets(sheet1).unProtect PASSWORD :=123 解除工
11、作表保護sheets(sheet1).usedrange工作表中已使用的單元格區(qū)域sheets(sheet1).visible=true(false)工作表是否隱藏sheets(sheet1).ScrollArea=$A$1:$A$10 工作表的控制區(qū)域為A1:A10 請教一下,用VB的OPEN可以打開其他可執(zhí)行文件么?比如*.mp3,*.bmp答:不能路過,看著挺好!蘭色幻想辛苦了!補充一下:有兩個方法,是在對工作簿open、saveas操作時非常有用的:getopenfilename、getsaveasfilename。這兩個方法是用于打開“打開”、“另存為”對話框,獲取要open、sav
12、eas的工作簿路徑名稱。前面蘭色幻想老師說的打開、另存為的方法都是在代碼中直接指定路徑和文件名,對自己用可以了,但一旦文件名或路徑有了變化,就要修改代碼,因此與用戶的交互性不是很好。使用這兩個方法,可以在需要打開或另存的時候跳出對話框,由用戶直接選取打開文件或另存文件的路徑、文件名。fileToOpen = Application.GetOpenFilename(Excel Files (*.xls), *.xls)If fileToOpen False ThenMsgBox Open & fileToOpenEnd If這是幫助中的一段代碼,可以將它放入sub中測試一下,注意運行后并不真正打
13、開選取的文件,只是取得該文件的路徑、文件名,真正打開還要使用workbooks.open方法。補充一點:Application.Dialogs(5).Show是調(diào)用另存為對話框,Application.Dialogs(1).Show是調(diào)用打開對話框如果想了解更多對話框?qū)?yīng)的參數(shù)設(shè)置一個按紐運行下面的宏(看下一個時按ESC)Sub 矩形1_單擊()on error resume nextFor I = 1 To 100MsgBox 下面的對話框參數(shù)將對應(yīng)參數(shù) & IApplication.Dialogs(I).ShowNextEnd Sub下是引用lpdcd在2004-10-15 9:50:00
14、的發(fā)言:請問:程序放錯地方了,什么程序應(yīng)該在Thisworkbook中,什么程序應(yīng)在模塊中。如果你想讓EXCEL自動為你服務(wù)(如打開、關(guān)閉文件、單擊單元格、更換工作表就自動執(zhí)行你設(shè)置的程序,而不需要去點擊按紐或宏-執(zhí)行宏來觸發(fā)宏的運行)就考慮用事件程序,也就是放到 MIRCROSOFT EXCEL對象中,如果程序要用手工控制,如點擊某個按紐或通過宏選項執(zhí)行宏才讓程序運行,這種情況下用宏按紐方便。舉個例子:填充非空單元格顏色Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)If Target.Va
15、lue ThenTarget.Interior.ColorIndex = 3End IfEnd Sub上面是一個事件程序,當工作表內(nèi)容改變時就運行Target.Interior.ColorIndex = 3如果這用宏來完成則很不方便,如果這樣則,在單元格中每填入一個數(shù)字都要點一下按紐運行下面的宏Sub 矩形1_單擊()If ActiveCell.Value ThenActiveCell.Interior.ColorIndex = 3End IfEnd Sub在VBA中,單元格常用的表示方法有兩種,一種是RANGE如A1在VBA的表示方法是Range(a1) A1:100的表法方法是:Range
16、(A1:A100)和以前一樣,大家先在工作表中插入一個矩形作為執(zhí)行宏的按紐在按紐上單擊右鍵,單擊指定宏,再單擊新建,在VBE窗口中的代碼窗口會出現(xiàn)Sub 矩形1_單擊()End Sub在兩句中間輸入Range(a1)=1000Range可以代表一個單元格區(qū)域,也可以代表一個單元格,通過Range(a1)=1000 也可以看出,它的用法是Range后括號中帶上A1就可以表示我們平時在工作表用到的中的A1單元格了,它在表示一個連續(xù)區(qū)域時是這個的,Range(區(qū)域的左上角單元格:區(qū)域的右下角單元格)請把剛才的代碼再加上一句:Range(a1:a10)=1000 如果是不連續(xù)的單元格多個區(qū)域,它是這樣
17、表示的:Range(單元格區(qū)域1,單元格區(qū)域2.)把剛才的代碼替換為:Range(a1:a10,c1:c10,e1:e10) = 100 A1是Range(A1)的簡寫.二者在用法上沒有什么區(qū)別,但在輸入時有點不同,如當你輸入A1后加點時,后面不會出現(xiàn)屬性和方法列表,而輸入Range(A1)加點后則會出現(xiàn)屬性列表供你選取Union是求多個單元格區(qū)域的并集,用法是Union(單元格區(qū)域1,單元格區(qū)域2.)它返回的是所有區(qū)域的所有單元格集合Range(C16).SelectActiveCell.FormulaR1C1 = 100Range(C11).Select其實我只是在C16單元格中填入數(shù)值1
18、00,就會出現(xiàn)這么一大堆代碼,這此代碼可以優(yōu)化為:Range(C16).=100Application.Intersect(Range(a1:a10), Range(a3:c4).Select這一句的意思是選中區(qū)域A1:A10 和 A3:C4重疊的區(qū)域,即兩個區(qū)域共有的區(qū)域,此名代碼運行的結(jié)果是選中區(qū)域A3:A4注意Intersect 方法是一個非常實用的一個方法,比如我們在動態(tài)選取工作表Sheet1A列中已存在數(shù)據(jù)的區(qū)域時,就會用到它。在介紹這個用法前還要介紹一下另一個工作表中非常實用的屬性:Usedrange你可以選試著運行一下:Activecell.usedrange.Select運行A
19、ctivecell.usedrange.Select你會發(fā)現(xiàn),在當前工作表中的所有用過的區(qū)域全被選中了。你明白了嗎,其實usedrange就是工作表中所有已存在內(nèi)容的矩形區(qū)域,為什么不說是存在內(nèi)容的單元格呢?原因是比如你在一個空工作表中的B3和C5單元格任意輸入一個數(shù)值,運行Activecell.usedrange.Select后選取的不只是B3和C5單元格,而是B3:C5單元格區(qū)域2003,不支持Aactivecell.usedrange.Selectactivesheet.usedrange.select可以了!Sheet1.UsedRange.Select我們平時在程序中會看到Activ
20、esheetworksheets(sheet1)sheet1sheets(sheet1)Sheets(1)順便說一說他們的區(qū)別Activesheet是指當前活動工作表,即你正在操作的工作表worksheets(sheet1)等同于sheets(sheet1)是特指工作表Sheet1,注意這時的Sheet1是工作表的名子,就如同員工工資表一樣是工作表的名稱,而Sheet1和Sheets(1),不管你如何命名,Sheet1和Sheets(1)就只代表第一個工作表,Sheet2和Sheets(2)代表第二個工作表。Intersect(Range(a:a), Sheets(sheet1).UsedRa
21、nge).SelectRange(a:a)是A列,Sheets(sheet1).UsedRange是工作表sheet1已使用的所有單元格區(qū)域,用Intersect求二者的共有區(qū)域,結(jié)果就是我們所要的A列已用所有區(qū)域其實這中間有個規(guī)律:如果你輸入的是非數(shù)字的字符,即使你刪除了,也被當做已用區(qū)域(已用過的區(qū)域),而當你刪除的是你輸入的數(shù)字時則不受這個限制)蘭老師:還是不明白?輸入非數(shù)字的字符時,確實是這樣。但是當輸入的數(shù)字時,有時還是受這個限制的,如附件中的A3刪掉后,怎么還選呢?應(yīng)該是受“Sheets(sheet1).UsedRange是工作表sheet1已使用的所有單元格區(qū)域”的影響吧,結(jié)果只
22、是二者的共有區(qū)域,并不是我們所要的A列已用所有區(qū)域。答;因為這個區(qū)域是矩形區(qū)域,在其他列第三行已填有內(nèi)容,所以A3即使刪除也屬已用區(qū)域。你可以再試著在C20填入任意一個內(nèi)容,A列選取的也是到20行CellS(行數(shù),列數(shù))如 A1:Cells(1,1) 用range表示: range(a1) b2: cells(2,2)用range表示: range(b2) c100:cells(100,3)用range表示: range(c100) cells也是一個常用的單元格表示方法,它和Range在表示單元格時有什么共同點和區(qū)別呢?Range可以表示單元格,也可以表示單元格區(qū)域cells也是這樣,但除了
23、cells作為一外集合對象外其他只能表示一個獨立的單元格,如:Cells.select選取工作表所有單元格 Cells(2,2).select選取B2單元格所以在表示單元格區(qū)域時,除表示全部單元格外,其他均需用Range來表示如:range(a1:b20).offset 是單元格或單元格區(qū)域的移動offset (移動行數(shù),移動列數(shù)) resize 是單元格或單元格區(qū)域的行數(shù)和列數(shù)重新設(shè)置后范圍大小resize (變動后行數(shù),變動后列數(shù)) 例: Range(A1:B2).Select 選取A1:B2區(qū)域 Range(A1:B2).Offset(3, 0).Select A1:B2區(qū)域向下移動三行,結(jié)果是選中A4:B5區(qū)域 Range(A1:B2).Resize(2, 4).Select A1:B2區(qū)域重新設(shè)置,行數(shù)為2,列數(shù)為4, 結(jié)果為選取A1:D2 Range(A1:B2).Resize(Range(A1:B2).Rows.Count + 2, Range(A1:B2).Columns.Count + 4).Select A1:B2區(qū)域重新設(shè)置,在原來行數(shù)的基礎(chǔ)上加2行,在原來列數(shù)的基礎(chǔ)上加4列,運行結(jié)果為:結(jié)果是選取A1:F4 問:比如我在SHEET1中
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 保姆月嫂合同范例
- 企業(yè)租房合同范例誰有效
- 個人課程培訓(xùn)合同范例
- 傭金支付合同范例
- epc業(yè)主合同范本
- 利潤分層合同范例
- 產(chǎn)業(yè)投資協(xié)議合同范例
- 基于降碳減污協(xié)同的電力行業(yè)發(fā)電端轉(zhuǎn)型研究
- 社保繳費率對就業(yè)的影響研究
- 加盟美業(yè)合同范例
- 上海倚海電力工程有限公司“4.17”高處墜落死亡事故調(diào)查報告
- 監(jiān)理工程師培訓(xùn)課件(共8)-2024鮮版
- 基于消費者行為的社交電商營銷策略研究分析-以小紅書和拼多多為例對比分析 電子商務(wù)管理專業(yè)
- 上海交通大學(xué)無機化學(xué)課件第八章第二部分
- 星巴克新員工培訓(xùn)手冊
- 《中國缺血性卒中和短暫性腦缺血發(fā)作二級預(yù)防指南2022》解讀
- 2024年西安電力高等??茖W(xué)校高職單招(英語/數(shù)學(xué)/語文)筆試歷年參考題庫含答案解析
- 袁家村招商策劃方案
- 天龍八部礦石分布圖
- 光伏電站運維安全培訓(xùn)內(nèi)容
- 丹尼斯人事規(guī)章(10年基層)崗前培訓(xùn)
評論
0/150
提交評論