精品伊人久久大香线蕉,开心久久婷婷综合中文字幕,杏田冲梨,人妻无码aⅴ不卡中文字幕

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Excel VBA 學習總結

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

  了解了這一點,我們先來分析一下Excel核心對象與我們看到的Excel文件的對應關系:

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

  從這個描述中,我們可以很容易的看出每個對象的層級關系和包含關系:

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

  這個縱向的關系就如下圖所示:

  靜態的分析完這些以后,下面我們動態的分析一個常見的操作:打開一個Excel文件,Excel會自動做哪些事呢?當我們打開多個Excel文檔后,這些對象有什么變化呢?

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

  從上面的分析我們已經得到了核心對象的關系,在下面我總結了這些核心對象最常用的一些屬性和方法。

1. Application

Application代表的是Excel應用程序,從核心的操作對象包含關系分析得到下列成員:

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

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

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

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

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

ThisWorkbook - 類別:屬性,返回類型:Workbook, 含義:當前正在運行的Macro所在的Excel文件

ActiveWorkbook - 類別:屬性,返回類型:Workbook,含義:當前活動的Excel文件

ActiveSheet - 類別:屬性,返回類型:Worksheet,含義:當前活動的Sheet

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

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

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

WorksheetFunction - 類別:集合/屬性,返回類型:WorksheetFunction對象,含義:返回所有Worksheet內置的函數
Windows - 類別:集合/屬性,返回類型:Windows集合,含義:當前Excel所有文件中打開的窗口。

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

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

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

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

InputBox - 類別:方法,返回類型:Variant,含義:顯示一個讓用戶輸入的對話框,可以指定錄入的數據類型并驗證。如果點擊取消,則返回False。

其余常用的方法成員:

Run:運行執行的宏或函數。

Quit:退出Excel。

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

OnTime:延時運行一個函數。

Evaluate:計算傳入字符串參數代表的對象或值。

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

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

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

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

ActiveWindow:獲得當前活動的窗口。

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

Intersect:獲得兩個Range對象的重疊區域。

其它常用的屬性成員:

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

DisplayStatusBar: 是否顯示狀態欄。

Version:當前Excel的版本號(12代表2007,14代表2010...),保存文檔選擇格式的時候可以使用這個信息。

DefaultFilePath:打開或保存文件時的默認路徑。

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

DisplayAlerts:是否顯示警告框。

FileDialog:獲得“打開文件”對話框對象,可以用Show去顯示,也可以設置這個對話框的一些屬性。

2. Workbook

描述層級關系的幾個成員:

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

Connections - 類別:集合/屬性,返回類型:Connections集合,含義:當前數據源的數據連接。

ActiveSheet - 類別:屬性,返回類型:Worksheet,含義:當前活動的Sheet。

其它常用的屬性:

Name:指定Workbook對應的Excel文件的文件名。

FullName:指定Workbook對應的Excel文件的全路徑。

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

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

Password:打開Workbook需要的密碼。

Saved:指示當前的Workbook是否已經保存了,是只讀的。

其它常用的方法:

Activate:激活指定的Workbook。

Close:關閉Workbook對應的文件。

Save:保存Workbook對應的文件。

SaveAs:另存為新的文件,不會出現對話框。

RefreshAll:刷新Workbook中所有的外部數據資源與數據透視源。

3. Worksheet

常用的成員包括:

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

Copy - 類別:方法,含義:復制Sheet到新的位置,會生成新的Sheet。

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

Move - 類別:方法,含義:移動Sheet到新的位置。

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

PivotTables - 類別:方法,含義:返回當前Sheet中的指定的數據透視表或者所有數據透視表。

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

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

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

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

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

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

4. Range 與 Cells

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

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

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 '自動調整A列寬度

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

Row, Column:返回Range對象中所有區域中第一塊區域的第一行行號,第一列列號,返回類型為Long。

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

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

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

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

Offset, Resize, End:這幾個都與選擇Range的范圍有關,Offset強調返回Range對象指定偏移方向上的單元格,執行這個操作后返回的是偏移后的單元格;Resize強調擴充當前的Range對象;End返回包含該Range的指定方向上的最后一個單元格,常用于返回用戶使用的最大的行與列。

Formula:返回或設置Range對象的公式,用于大范圍填充或計算數據時很方便。

AutoFill:自動填充Range對象中的所有單元格,用于大范圍填充數據時很方便。

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

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

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

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

Areas:Range對象可以是不連續的,每個不連續的區間就用Area標識。

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

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

Worksheet:當前Range所在的Sheet,屬于反向的引用,有時候能派上用場。

5. Selection

  Selection代表了Sheet中選中的內容,如果選中的是單元格,那么它返回的就是Range對象,如果選中的是其他元素,則返回的就是其他對象。它是Application的一個相當重要的屬性。一般來說,當Range對象執行Select方法后,Selection的表演就正式開始了。之所以單拿出這個屬性來強調一下,是因為它的地位很重要,它代表了一種操作思想,雖然選中單元格再操作并不總是很好的手法(說來說去還是效率的問題,后面我會單獨總結一下這個方面的做法),但是很多時候,這么做確實是很多人的首要選擇,原因很簡單,因為很自然,很直觀,我們可以看著Excel一步一步完成我們想要的每個步驟。

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

對象有默認屬性,使用對象時如果不指定屬性,則使用默認屬性。一般不建議使用,容易引入Bug。

到Range對象時,我已經不再區分屬性和方法了,在VBA語法中這個實在沒太大區別,使用的時候需要傳參數就傳即可。

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

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

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

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

本站僅提供存儲服務,所有內容均由用戶發布,如發現有害或侵權內容,請點擊舉報
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
自學VBA,需要熟悉的常用對象
VBA常用對象概述(轉載)
淺談Excel開發:三 Excel 對象模型
Excel VBA與數據統計 第四章 對象
EXCEL VBA常用操作對象匯總(辦公室職場必備)
Python操作Excel文件(3):優雅干將openpyxl | silaoA的博客
更多類似文章 >>
生活服務
分享 收藏 導長圖 關注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點擊這里聯系客服!

聯系客服

主站蜘蛛池模板: 沙坪坝区| 剑阁县| 金平| 图片| 霍州市| 鄱阳县| 扎鲁特旗| 章丘市| 临汾市| 美姑县| 东兴市| 确山县| 永泰县| 永福县| 科技| 江油市| 宝应县| 伊吾县| 凤凰县| 连江县| 大渡口区| 大厂| 天等县| 阿合奇县| 鲁山县| 长寿区| 普兰县| 太原市| 松原市| 普格县| 临泽县| 河北省| 南昌市| 逊克县| 阳东县| 鄂州市| 吴川市| 江津市| 上蔡县| 衢州市| 乡宁县|