其實,VBA很簡單!

New是可選的,表示隱式創建對象。若使用New來聲明對象變量,在第一次創建引用變量時將創建該對象的實例。因此,不必再使用Set語句對該對象賦值。例如使用Excel調用外部引用對象Outlook.Application。可以有以下兩種寫法:

Dim ol as Outlook.Application
Set ol = New Outlook.Application

或者這樣寫:

Dim ol as New Outlook.Application

其中,第二種方式直接創建對象的實例了,因此不必再使用Set獲取實例對象了。

3、操作符

VBA主要有算術操作符、比較操作符、連接操作符及邏輯操作符等四種運算符包括,其內容如下所示:

算術操作符為:+(加法);-(減法);*(乘法);/ (除法);\(取整除法);^(冪);Mod(求餘)。

比較操作符為:(大於);>=(大於或等於);=(等於);<>(不等於);Like(字符串的比較);Is(對象引用比較)。

邏輯運算符為:And(邏輯與);Or(邏輯或);Not(邏輯非);Eqv(邏輯等價); Imp(邏輯蘊含);Xor(邏輯互斥)。

連接操作符為:&(連接);+(有條件的連接操作)。

其他操作符基本很好理解,除了+運算符。+運算符具有兩義性。當至少有一個表達式不是Variant類型情況下,兩個表達式都是字符串或者其中一個表達式是字符串,另一個是除Null的任意Variant時,+代表字符串連接。如下所示:

其實,VBA很簡單!

當兩個表達式都是Variant的情況下,表達式都是字符串時,+表示字符串連接操作。如下所示:

其實,VBA很簡單!

4、過程

VBA有三種過程,分別為:Sub過程、Function過程和Property過程。其中Sub過程和Function過程最常見也最有用,接下來主要說明這兩種過程。

Sub過程是使用Sub語句聲明的子過程,使用開發工具中的錄製宏按鈕錄製出來的過程都是Sub過程。其語法格式如下:

Private | Public | Friend | [Static] Sub name [(arglist)]
[statements]
[Exit Sub]
[statements]
End Sub

一些重要的參數解釋如下:

  • Public:表示所有模塊的所有其他過程都可訪問這個Sub過程。如果在包含Option Private的模塊中使用,則這個過程在該工程外是不可使用的。
  • Private:只有在包含其聲明的模塊中的其他過程可以訪問該Sub過程。
  • Friend:只能在類模塊中使用,表示該Sub過程在整個工程中都是可見的,但對對象實例的控制者是不可見的。
  • Static:表示在調用時保留Sub過程的局部變量的值。Static屬性對在Sub外聲明的變量不會產生影響。即使過程中也使用了這些變量。

Function過程語法

[Public | Private | Friend] [Static] Function name [(arglist)] [As type]
[statements]
[name = expression]
[Exit Function]
[statements]
[name = expression]
End Function

Function語法與Sub語法基本一致,除增加了Function返回的類型一項以外。它們的區別主要在於:Function只能返回引用對象的某個屬性值或者運算結果,而不能對對象的屬性、格式等信息進行改變,而Sub過程卻可以這樣做。

三、幫助文檔

以上內容簡單地介紹了VBA的一些語法知識。像VBA函數,循環語句,條件語句、事件、具體對象的使用等VBA知識,還未涉及在內。這些內容將在以後的文章中分享給大家。另外,上述語法內容有些參數還未詳細說明,或者你希望獲取更多關於VBA語法與對象的知識,小編分享兩份VBA開發者手冊(一份是《英文版Office2013開發者手冊》,一份是《中文版Office2003開發者手冊》,如下圖所示)給大家,希望對大家編寫VBA宏語言有所幫助。手冊下載鏈接內置在頭條號自動回覆中,中文版請留言cn,英文版請留言en即可獲取百度雲下載鏈接。

其實,VBA很簡單!

其實,VBA很簡單!

四、應用實例

VBA語法知識和幫助文檔都一一介紹完了。接下來,我給大家編寫三個VBA應用實例吧~~~

一、讀取Excel活動工作簿中各個工作表的名稱,並寫入到第一張工作表中。

代碼如下所示:

其實,VBA很簡單!

其實,VBA很簡單!

二、將圖1數據按照ABCD類別進行合併,形成圖2的數據格式。

其實,VBA很簡單!

圖1

其實,VBA很簡單!

圖2

代碼如下所示:

其實,VBA很簡單!

說明:

  • Option Explicit表示強制要求在此模塊中明確申明變量。若使用了未申明的變量,將引發“編譯錯誤:變量未定義”的警告框。
  • Public Const Delimeter As String = "|"定義了一個模塊級別的字符串常量,代表連接對象的分隔符。
  • ArrayLength定義了一個模塊級別函數,該函數用於計算數組中元素的個數。UBound及LBound函數請參考幫助文檔。
  • 在Concate_Items子過程中,Dim語句聲明瞭一組變量,On Error Resume Next表示遇到錯誤時不打斷程序的執行流程。set語句獲取一個字典對象,用於存儲鍵值對。iRow獲取活動工作表已用區域的最大行號。接著,使用For...Next循環語句A1:A10單元格,將其作為字典的鍵,通過Range對象的Offset偏移方法獲取字典的值con。若鍵值對不存在字典中將其添加到字典中,若字典中存在此鍵,將其取出來與新的值做連接,然後移除原來的鍵值對,再添加到字典中。最後,使用Cells對象將數據寫入工作表中。

三、將上圖圖2數據按照分隔符拆分成圖1數據格式。

代碼如下所示:

其實,VBA很簡單!

方法同例2,使用了VBA函數Split將單元格中的值按照分隔符Delimeter分開,再循環寫入相應數據,Split函數用法請參考幫助文檔。


分享到:


相關文章: