小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

Excel VBA 學(xué)習(xí)總結(jié)

 Excel實(shí)用知識(shí) 2021-11-21

  Excel的操作基本都是圍繞工作簿、表單、單元格展開的,這些就是Excel操作的核心對象,所以VBA操作的核心對象也是它們。了解了這些核心的對象與它們支持的功能,我們就可以很方便的開發(fā)各種應(yīng)用。

  了解了這一點(diǎn),我們先來分析一下Excel核心對象與我們看到的Excel文件的對應(yīng)關(guān)系:

  • 對于Excel來說,最外層的對象就是Application,它代表整個(gè)Excel應(yīng)用;
  • 而每個(gè)Excel文件,都對應(yīng)一個(gè)Workbook;
  • 文件中的每個(gè)Sheet表單,都對應(yīng)一個(gè)Worksheet;
  • 表單中的單元格,對應(yīng)的是Range對象(這個(gè)與直觀想象可能不一樣,實(shí)際上,并不存在Cell對象,表征單元格的對象是Range);

  從這個(gè)描述中,我們可以很容易的看出每個(gè)對象的層級(jí)關(guān)系和包含關(guān)系:

  • Application對象必然包含一個(gè)Workbooks集合,來表征Excel的每個(gè)文件;
  • Workbook對象必然包括一個(gè)Worksheets集合,來表征它包含的所有表單;
  • Worksheet對象又必然包含Range或者Cells對象,來標(biāo)識(shí)它包含的單元格;
  • 當(dāng)然由于描述問題的形式不一樣,Worksheet也自然會(huì)包含Rows和Columns集合來標(biāo)識(shí)它包含的行和列。

  這個(gè)縱向的關(guān)系就如下圖所示:

  靜態(tài)的分析完這些以后,下面我們動(dòng)態(tài)的分析一個(gè)常見的操作:打開一個(gè)Excel文件,Excel會(huì)自動(dòng)做哪些事呢?當(dāng)我們打開多個(gè)Excel文檔后,這些對象有什么變化呢?

  打開第一個(gè)Excel文檔的時(shí)候,Excel會(huì)實(shí)例化一個(gè)Application對象代表Excel應(yīng)用,然后實(shí)例化一個(gè)Workbook代表當(dāng)前的工作簿,然后實(shí)例化相應(yīng)的Worksheet和更底層的其他對象。當(dāng)再次打開別的文檔的時(shí)候,由于Application對象已經(jīng)存在了,所以,只會(huì)實(shí)例化新的Workbook,Worksheet等對象,而不同的Workbook對象之間并不會(huì)互相干涉。當(dāng)我們操作Excel中的各種對象的時(shí)候,基本都是選中并激活對象,然后通過鼠標(biāo)或鍵盤完成各種功能。這個(gè)過程是簡單的,但是很直觀,很有用,其實(shí)自動(dòng)化這些操作的過程,就是我們使用VBA腳本模擬這個(gè)過程的過程。

  從上面的分析我們已經(jīng)得到了核心對象的關(guān)系,在下面我總結(jié)了這些核心對象最常用的一些屬性和方法。

1. Application

Application代表的是Excel應(yīng)用程序,從核心的操作對象包含關(guān)系分析得到下列成員:

Workbooks - 類別:集合/屬性,返回類型:Workbook集合,含義:當(dāng)前打開的所有Excel文件的集合

Worksheets/Sheets - 類別:集合/屬性,返回類型:Worksheet集合,含義:當(dāng)前活動(dòng)的Excel文件中Worksheet的集合

Rows - 類別:集合/屬性,返回類型:Range,含義:當(dāng)前活動(dòng)Sheet的所有行

Columns - 類別:集合/屬性,返回類型:Range,含義:當(dāng)前活動(dòng)Sheet的所有列

Cells - 類別:屬性,返回類型:Range,含義:當(dāng)前活動(dòng)Sheet中所有的單元格

ThisWorkbook - 類別:屬性,返回類型:Workbook, 含義:當(dāng)前正在運(yùn)行的Macro所在的Excel文件

ActiveWorkbook - 類別:屬性,返回類型:Workbook,含義:當(dāng)前活動(dòng)的Excel文件

ActiveSheet - 類別:屬性,返回類型:Worksheet,含義:當(dāng)前活動(dòng)的Sheet

ActiveCell - 類別:屬性,返回類型:Range,含義:當(dāng)前活動(dòng)的單元格(不一定是一個(gè),可能是一組)

Range - 類別:屬性,返回類型:Range,含義:指定的一組單元格,需要提供參數(shù)

Selection - 類別:屬性,返回類型:選中的對象類型(如Range,Chart等),含義:當(dāng)前Macro執(zhí)行的目標(biāo)文件中選中的對象

WorksheetFunction - 類別:集合/屬性,返回類型:WorksheetFunction對象,含義:返回所有Worksheet內(nèi)置的函數(shù)
Windows - 類別:集合/屬性,返回類型:Windows集合,含義:當(dāng)前Excel所有文件中打開的窗口。

從Application代表著可視化元素分析得到下列成員:

Dialogs - 類別:集合/屬性,返回類型:Dialogs集合,含義:Excel所有內(nèi)置的對話框

CommandBars - 類別:集合/屬性,返回類型:CommandBars集合,含義:Excel所有菜單和工具欄

StatusBar - 類別:屬性,返回類型:String,含義:Excel狀態(tài)欄上的文本

InputBox - 類別:方法,返回類型:Variant,含義:顯示一個(gè)讓用戶輸入的對話框,可以指定錄入的數(shù)據(jù)類型并驗(yàn)證。如果點(diǎn)擊取消,則返回False。

其余常用的方法成員:

Run:運(yùn)行執(zhí)行的宏或函數(shù)。

Quit:退出Excel。

SendKeys:模擬鍵盤操作(%代表Alt, ^代表Ctrl, +代表Shift,其余特殊鍵如Tab要加'{}',如'{Tab}', '{Enter}'等),這個(gè)函數(shù)一般用于當(dāng)不能用Excel中的對象和函數(shù)解決相關(guān)問題的時(shí)候,可以模擬用戶按鍵盤的方式完成默寫功能。

OnTime:延時(shí)運(yùn)行一個(gè)函數(shù)。

Evaluate:計(jì)算傳入字符串參數(shù)代表的對象或值。

GoTo:選中指定條件的范圍并激活。

ActivateMicrosoftApp:激活一個(gè)微軟的程序,比如計(jì)算器(0),Word(1)等等。

GetOpenFileName:打開“打開文件”對話框,返回選中的文件的名字,但并不真打開。

GetSaveAsFileName:打開“另存為”對話框,返回用戶選中或輸入的名字,但并不真保存。

ActiveWindow:獲得當(dāng)前活動(dòng)的窗口。

FindFile:顯示“打開文件”對話框,并打開選中文件,打開成功則返回True,否則返回False。

Intersect:獲得兩個(gè)Range對象的重疊區(qū)域。

其它常用的屬性成員:

ScreenUpdating:是否關(guān)閉屏幕刷新,一般一些操作的時(shí)候不想立即顯示出來,就可以先關(guān)閉,做完操作以后開啟。

DisplayStatusBar: 是否顯示狀態(tài)欄。

Version:當(dāng)前Excel的版本號(hào)(12代表2007,14代表2010...),保存文檔選擇格式的時(shí)候可以使用這個(gè)信息。

DefaultFilePath:打開或保存文件時(shí)的默認(rèn)路徑。

CutCopyMode:推出剪切/復(fù)制模式的話,程序中選中目標(biāo)的虛線框就不顯示了,一般如果有剪切或復(fù)制操作后,都要把這個(gè)設(shè)為false。

DisplayAlerts:是否顯示警告框。

FileDialog:獲得“打開文件”對話框?qū)ο螅梢杂肧how去顯示,也可以設(shè)置這個(gè)對話框的一些屬性。

2. Workbook

描述層級(jí)關(guān)系的幾個(gè)成員:

Worksheets/Sheets - 類別:集合/屬性,返回類型:Worksheets集合,含義:當(dāng)前活動(dòng)的Excel文件中Worksheet的集合。

Connections - 類別:集合/屬性,返回類型:Connections集合,含義:當(dāng)前數(shù)據(jù)源的數(shù)據(jù)連接。

ActiveSheet - 類別:屬性,返回類型:Worksheet,含義:當(dāng)前活動(dòng)的Sheet。

其它常用的屬性:

Name:指定Workbook對應(yīng)的Excel文件的文件名。

FullName:指定Workbook對應(yīng)的Excel文件的全路徑。

Names:指定Workbook中所有命名的名字集合。

Path:指定Workbook對應(yīng)的Excel文件的路徑(不包含文件名)。

Password:打開Workbook需要的密碼。

Saved:指示當(dāng)前的Workbook是否已經(jīng)保存了,是只讀的。

其它常用的方法:

Activate:激活指定的Workbook。

Close:關(guān)閉Workbook對應(yīng)的文件。

Save:保存Workbook對應(yīng)的文件。

SaveAs:另存為新的文件,不會(huì)出現(xiàn)對話框。

RefreshAll:刷新Workbook中所有的外部數(shù)據(jù)資源與數(shù)據(jù)透視源。

3. Worksheet

常用的成員包括:

Name - 類別:屬性,含義:獲取或設(shè)置指定Worksheet的名字。在Excel中,手動(dòng)操作是雙擊Sheet的名字位置,然后修改。

Copy - 類別:方法,含義:復(fù)制Sheet到新的位置,會(huì)生成新的Sheet。

Delete - 類別:方法,含義:刪除Sheet。

Move - 類別:方法,含義:移動(dòng)Sheet到新的位置。

Paste - 類別:方法,含義:粘貼Clipboard中的內(nèi)容到Sheet中。

PivotTables - 類別:方法,含義:返回當(dāng)前Sheet中的指定的數(shù)據(jù)透視表或者所有數(shù)據(jù)透視表。

Rows - 類別:集合/屬性,含義:返回當(dāng)前Sheet中的所有行

Columns - 類別:集合/屬性,含義:返回當(dāng)前Sheet中的所有列

Cells - 類別:集合/屬性,含義:返回當(dāng)前Sheet中的所有的單元格(用行和列的Index標(biāo)識(shí))

Range - 類別:集合/屬性,含義:返回當(dāng)前Sheet中的所有單元格(用行列的字符串標(biāo)識(shí))

UsedRange - 類別:集合/屬性,含義:返回當(dāng)前Sheet中的用戶使用的范圍,這個(gè)是相當(dāng)有用,它的很多屬性都是居家生活必備良品。

Shapes - 類別:集合/屬性,含義:返回當(dāng)前Sheet中所有的Shape對象,如自選圖形,多邊形,OLE對象,圖片等。

4. Range 與 Cells

  實(shí)際上,Excel的對象中并沒有Cell對象,所有的Cell相關(guān)的區(qū)域全部用Range來標(biāo)識(shí)。同時(shí)Cells是存在的,它代表當(dāng)前Sheet中所有的單元格,它的類型是Range,它存在的價(jià)值在于:Range用字符串來標(biāo)識(shí)單元格,但是有時(shí)候循環(huán)的時(shí)候,用行列的Index來標(biāo)識(shí)單元格更方便操作,特別是當(dāng)要處理當(dāng)前Sheet中的所有單元格時(shí),Cells就派上用場了。

  Range對象是Excel操作最為核心的對象,幾乎所有的操作最終都是反映到該對象上,所以熟悉這個(gè)對象的常用成員是非常重要的。要引用Range對象,可以直接使用單元格區(qū)域的名字,地址等字符串,設(shè)置起始結(jié)束單元格格式,除了這個(gè),使用Offset,Resize方法,或者最簡單的使用'[]'也可以引用相關(guān)Range對象。例如:

復(fù)制代碼
Range('A1')=1  
Range(
'MyCell').Value = 1 '使用了單元格的名稱
Range('A1:B10').Value = 1
Range(
'A1, A3, A5'= 'XYZ'
Range(
'A1''B10'= 1
strValue = [A1:B1]
Range(Cells(0,0),Cells(5,5)).Clear
Range(
'A:A').EntireColumn.AutoFit '自動(dòng)調(diào)整A列寬度
復(fù)制代碼

Range對象常用的成員如下所示:

Row, Column:返回Range對象中所有區(qū)域中第一塊區(qū)域的第一行行號(hào),第一列列號(hào),返回類型為Long。

Rows, Columns:返回該Range對象包含的所有行,所有列,返回類型為Range。

CurrentRegion:返回四面被空行和空列包圍的一個(gè)新的Range對象,這個(gè)新的Range對象包含當(dāng)前Range對象(不管當(dāng)前的Range是不是空行空列),這個(gè)屬性在相當(dāng)一部分操作中都是很重要的,特別是當(dāng)目標(biāo)Range的行列位置不確定時(shí)可以用這個(gè)屬性返回目標(biāo)區(qū)域。

Count:返回Range對象包含的單元格的數(shù)目,返回類型為Long。

Value:Value代表Range對象的值,類型為Variant,可讀可寫,寫的時(shí)候會(huì)把Range中所有單元格都設(shè)為相同值。

Offset, Resize, End:這幾個(gè)都與選擇Range的范圍有關(guān),Offset強(qiáng)調(diào)返回Range對象指定偏移方向上的單元格,執(zhí)行這個(gè)操作后返回的是偏移后的單元格;Resize強(qiáng)調(diào)擴(kuò)充當(dāng)前的Range對象;End返回包含該Range的指定方向上的最后一個(gè)單元格,常用于返回用戶使用的最大的行與列。

Formula:返回或設(shè)置Range對象的公式,用于大范圍填充或計(jì)算數(shù)據(jù)時(shí)很方便。

AutoFill:自動(dòng)填充Range對象中的所有單元格,用于大范圍填充數(shù)據(jù)時(shí)很方便。

SpecialCells:返回Range對象中滿足一定條件的單元格,返回類型為Range,用于大范圍填充數(shù)據(jù)的時(shí)候,配合使用可以有奇效。

Select, Clear, Copy, Cut, Paste, PasteSpecial, Delete:這一組為最基本的操作,不解釋。

MergeCells:返回Range對象中是否包含合并的單元格,返回類型為Boolean。

Merge, UnMerge:合并,取消合并Range對象中的單元格。

Areas:Range對象可以是不連續(xù)的,每個(gè)不連續(xù)的區(qū)間就用Area標(biāo)識(shí)。

Address:Range對象的地址,以行列形式返回字符串,這個(gè)有時(shí)候很方便。

VerticalAlignment, HorizentalAlignment:Range對象中單元格的對齊方式。

Worksheet:當(dāng)前Range所在的Sheet,屬于反向的引用,有時(shí)候能派上用場。

5. Selection

  Selection代表了Sheet中選中的內(nèi)容,如果選中的是單元格,那么它返回的就是Range對象,如果選中的是其他元素,則返回的就是其他對象。它是Application的一個(gè)相當(dāng)重要的屬性。一般來說,當(dāng)Range對象執(zhí)行Select方法后,Selection的表演就正式開始了。之所以單拿出這個(gè)屬性來強(qiáng)調(diào)一下,是因?yàn)樗牡匚缓苤匾砹艘环N操作思想,雖然選中單元格再操作并不總是很好的手法(說來說去還是效率的問題,后面我會(huì)單獨(dú)總結(jié)一下這個(gè)方面的做法),但是很多時(shí)候,這么做確實(shí)是很多人的首要選擇,原因很簡單,因?yàn)楹茏匀?,很直觀,我們可以看著Excel一步一步完成我們想要的每個(gè)步驟。

在VB編輯器中,按快捷鍵Ctrl+J可以顯示Intellisense列表。

對象有默認(rèn)屬性,使用對象時(shí)如果不指定屬性,則使用默認(rèn)屬性。一般不建議使用,容易引入Bug。

到Range對象時(shí),我已經(jīng)不再區(qū)分屬性和方法了,在VBA語法中這個(gè)實(shí)在沒太大區(qū)別,使用的時(shí)候需要傳參數(shù)就傳即可。

注意對象的賦值用的是“Set...=...”語法。

在無二義性的前提下,VBA中支持省略父對象而直接使用屬性,如直接使用Selection,代表使用的是Application.Selection。

最好的資料就是MSDN,這是Excel資料的鏈接:http://msdn.microsoft.com/en-us/library/bb149081(v=office.12).aspx

存在即合理,常用、重要都是相對的,不要小瞧任何對象和成員。

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請遵守用戶 評(píng)論公約

    類似文章 更多