VBA基本概念

來源:互聯網
上載者:User

一、VBA對象

幾乎90%的VBA程式都是在操作對象,VBA有相應的對象、屬性、方法和事件,其中對象是核心

a)        對象如何操作

對象.屬性、對象.方法、父物件.子物件.屬性

例:Sheets("工作表").Name----Sheets("工作表")是對象,Name是對象的屬性

WorkBooks(2).Close-----前者是對象,Close是對象的方法

Range("a1:a100").Comment.Delete--------Range是父物件 Comment是子物件  Delete是方法

b)       常用的對象及其含義

i.         Application     代表整個Excel應用程式

ii.       Window        代表視窗

iii.     Worksheet             代表一個工作表

iv.      Sheets                  執行的或活動活頁簿中所有工作表的集合

v.        ShapeRange           代表形狀地區,它是文檔中的一組形狀

vi.      PivotTable             代表工作表上的樞紐分析表

vii.    Workbook             代表一個Excel活頁簿

viii.  Shape                    代表繪圖層中的對象,例如,快取圖案、手繪多邊形、OLE對象或圖片

ix.      Range                   代表某一個儲存格、某一行、某一列、某以選定地區、或者某以三維地區

x.        Name                    代表儲存格範圍的定義名,名稱可以是內建名稱(如Print_Area)或自訂名稱

xi.      Chart                    代表活頁簿中的圖表

xii.    FileDialog             提供檔案對話方塊,其功能與Office應用程式中標準的‘開啟’和‘儲存’對話方塊類似

xiii.  CommandBarPopup       代表命令欄上的一個快顯控制項

xiv.  CommandBar         代表容器應用程式中的一個命令欄

c)        VBA的屬性

屬性是對象的外部和內部特徵,包括大小、顏色、邊距、數量、或者某一方面的行為,如:是否可以啟用,是否可見,是否可以重新整理,通過修改對象的屬性值來改變對象的特徵。可以在彈出提示的時候按F2查看所有成員,右擊可以顯示隱式成員,也可以查看協助,搜尋 對象 對象成員    worksheets 對象成員

d)       VBA的方法

VBA需要對象在錢,方法在後,例:worksheets.add----worksheets表示工作表對象,add是方法,表示建立,下面看下worksheets的方法列表

i.         Add              建立工作表,圖表或宏表,建立的工作表將成為使用中工作表

ii.       Copy       將工作表複製到活頁簿的另一個位置

iii.     Delete     刪除對象

iv.      FillAcrossSheets     將儲存格範圍複製到集合中所有其他工作表的同一個位置

v.        Move      將工作表移到活頁簿的其他位置

vi.      PrintOut               列印對象

vii.    PrintPreview          按對象列印後的外觀效果,顯示對象的預覽

viii.  Select      選擇對象

e)        VBA的事件

時間是對象在某個狀態下觸發的動作,每個對象都會有諸多事件,不同時間有不同的觸發條件

i.         事件舉例

Private Sub workbook_open()

Sheets(1).Select

[a1] = "張帥鵬"

End Sub

當sheet1被開啟的時候,A1處被賦值上去字串

ii.       事件的分類及其用途

VBA有很多類事件,分類的表混由對象來決定

Application     應用程式事件

Workbook      活頁簿事件

Worksheet      工作表事件

Chart             圖表事件

UserForm       表單事件

Label             標籤事件(表單中的控制項)

Image            映像事件(ActiveX控制項)

f)        VBA的運算子

i.         算數運算子

^            求一個數位某次方,如A^2 

*            乘法運算

/             除法運算

\             對兩個數作觸發並返回一個整數

Mod        求兩數的餘數

+          加法運算   

-             減法運算

&           字元串連

ii.       比較子

<            小於

<=          小於或等於

>            大於

>=          大於或等於

=            等於

<>          不等於

Like和is        比較字串的運算

iii.     邏輯運算子

And        用來對象兩個運算式進行邏輯串連

Eqv        用來對兩個運算式進行邏輯等價運算

Imp        用來對兩個運算式進行邏輯蘊含運算

Not         用來對錶達式進行邏輯否定運算

Or          用來對兩個運算式進行邏輯分析取運算

Xor         用來對兩個運算式進行邏輯互斥或運算

iv.      注釋

在一行代碼結束或在某一行上 '  單引號後則為注釋

g)       簡單的字元處理函數

i.         Option Compare[Binary|Text|Database]

不加後面參數表示預設的比較方式。作用在模組層級別的預設比較方法

Bianary  不區分大小寫文本排序層級

Option Compare Binary

Sub 字元比較()

MsgBox "a" > "A"  '結果為true

End Sub

Text   區分大小寫

Option Compare Text

Sub 字元比較()

MsgBox "a" > "A" '結果為false

End Sub

ii.       StrComp(string1,string2,[compare])     字元相似比較

如果string1小於string2返回 -1

大於              返回       1

等於              返回      0

String1或string2為null      返回       null

iii.     Strconv(string,conversion,LCID)字串類型轉換

Conversion第二個參數表示轉換類型,根據不同參數可以轉換9種類型的文本

vbUpperCase(常數)              1(值)      將字串中字轉換成大寫

vbLowerCase                       2            將字串中字轉換成小寫

vbProperCase                       3            將字串中每個字的開頭字母轉成大寫

vbWide                               4*           將字串單位元組字元轉成成雙位元組字元

vbNarro                              8*           將字串中雙位元組字元轉成單位元組字元

vbKatakanna                        16**       將字串中平假名字元轉成片假名字元

vbHiraganra                         32**       將字串中片假名字元轉成平假名字元

vbUnicode                           64           將字串轉成Unicode

vbFromUnicode                   ##           將字串由Unicode轉成系統的預設碼頁

代碼:

Sub strconv運算()

MsgBox strconv("Enlish", vbUpperCase) & Chr(10) &strconv("Enlish", vbLowerCase) & Chr(10) &strconv("English", vbProperCase) & Chr(10) &strconv("English", vbWide)

 

End Sub

iv.      Format(expression[,format[,firsdayofweek[,firstweekioyear]]]):格式化字元

代碼:

Sub 日期()

MsgBox Format(Date, "yyyy年m月") &Chr(10) & Format(Date, "AAA") & Chr(10) & Format(Now,"h") & "點鐘", 64, "現在是"

End Sub

v.        LCase(String)/UCase(string)

轉成大寫和小寫函數,返回結果

vi.      String(number,character)/Space(number)

得到重複字元的字串

String(5,"*") 返回*****    Space(5)       返回5個空格

vii.    Lset/Rset

在以字串變數中將以字串往靠左對齊,或是將以使用者定義型別變數複製到另一使用者自訂類型變數,通俗點講就是將字串二按字串一的進行取捨。如果字串二長度小於字串以則以空格填充,否則從左邊開始街區字串一的長度

悲劇:剛明白是什麼意思,原來是按照第一個字串的長度對下面字串取捨,長度不夠就用空格填充

代碼:Sub Lset用法()

Dim str1

str1 = "廣州11111111111111"

LSet str1 = "廣州本田"

MsgBox "[" & str1 & "]"

str1 = "製造廠"

LSet str1 = "廣州本田製造廠"

MsgBox str1

End Sub

viii.  Instr([start,]string1,string2[,compare])返回字串出現位置

第三個參數指定的是否區分大小寫,

vbUseCompareOption   -1 使用Option Compare 語句設定執行一個比較

vbBinaryCompare         0     執行一個二進位的比較(不區分大小寫)

vbTextCompare             1     執行一個按照原文的比較(區分大小寫)

例如:InStr(4,"我是大好人","好",1) 返回座標

ix.       Left/Mid/Right:從左,中,右取捨

Left(String,length)  返回包含字串中左邊算起指定數量的字元

Mid(String,start[,length])  返回包含字串從中間起指定數量的字元

Right(string,length)              返回包含字串從右邊算起指定數量的字元

x.        LTrim(String)/RTrim(string)/Trim(String)去除空格

返回其參數字串的副本,沒有前置空白(LTrim) 尾隨空白(RTrim) 或前置和尾隨空白(Trim)

xi.      Like字串相似性比較

Result=string like pattern

如果string與pattern匹配為true,否則result為false 如果有一個為null,則也為null

Pattern裡可以使用萬用字元

?             任何單一字元

*            0個或多個字元

#            任何一個數字(0-9)

[charlist]        charlist中的任何單一字元

[!charlist]              不再charlist中的任何單一字元

 

簡單的驗證案例實現:

插入使用者表單,加入一個文字框然後雙擊進入,註冊它的change事件

Private Sub TextBox1_change()

    If Len(TextBox1.Text) >0 Then

        IfRight(TextBox1.Text, 1) Like "[a-z]" Then Exit Sub Else Me.TextBox1 =Left(TextBox1.Text, Len(TextBox1.Text) - 1)

    End If

End Sub

完成效果。隨便錄入字元,可以發現除小寫字母外任何字元都無法錄入,包括數字、標點、漢字。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.