1. 程式人生 > >Excel中VBA程式設計學習筆記(一)

Excel中VBA程式設計學習筆記(一)

1、註釋及編碼規則

註釋:

  1. 單引號:可以位於句子結尾或者單獨一行;
  2. Rem:單獨一行

 

編碼規則:

  1. 如果VB中的關鍵字是由多個英文字母組成,則系統自動將每個單詞的首字母轉換成大寫字母,其餘字母一律轉換成小寫字母。
  2. 對於使用者自定義的變數名、過程名、函式名,VB以第一次定義的為準,以後輸入的自動轉換成首次的形式。
  3. 如果在同一行寫多條語句,語句 間 要用冒號“:”隔開。例如:

Form1.Width  =  300 :  Form1.Caption = “VB!”

  1. 如果一條語句在一行寫不下,可以分多行寫,續航符為:一個空格後面跟一個下劃線“_”。

例如:Address = “天津市河北工業大學”  +  _

                     “現代化教學中心”  +  _

                              “計算機技術基礎教研室”

 

2、類模組

在Excel VBA中類模組就相當於一個類,類模組的名字就是類名。

下面為定義的一個類Class1,並且有些基本屬性及一個初始化函式

 

【例】

下面定義一個類Class1,

Private name, sex As String

Private age As Integer

Public rng As Range

Sub class_initialize()  '初始化

    sex = "男"

    age = 20

End Sub

Public Property Get GetName() As Variant

    GetName = name

End Property

 

Public Property Get GetSex() As Variant

    GetSex = sex

End Property

Public Property Get GetAge() As Integer

    GetAge = age

End Property

 

Public Property Let SetName(newName As String)

    name = newName

End Property

 

Public Property Let SetSex(newSex As String)

    sex = newSex

End Property

 

Public Property Let SetAge(newAge As Integer)

    age = newAge

End Property

 

Public Function GetInfo() As String

    GetInfo = "姓名:" & name & ";性別:" & sex & ";年齡:" & age

End Function

 

Public Property Get maxNumer(num As Integer) As Integer

    maxNumber = Application.WorksheetFunction.Max(num, age)

End Property

 

Public Property Set SetBckColor(myRng As Range)

    myRng.Interior.ColorIndex = 3

End Property

 

新建一個過程

Sub test()

   Set tmp = New Class1

   Debug.Print tmp.GetAge() '20

   tmp.SetName = "張三"

   tmp.SetAge = 23

   Debug.Print tmp.GetInfo()    '姓名:張三;性別:男;年齡:23

   Set tmp.SetBckColor = Sheet3.Rows(1)         ‘將Sheet3的第一行背景色設定為紅色

End Sub                     

3、新建物件及常用物件

新建一個模組。

Option Explicit

Sub a()

Dim ab As New Class1

Debug.Print ab.x

End Sub

不能使用NEW建立的物件

不能使用NEW建立

不允許的程式碼例子

基本資料型別的變數

Dim X As New String

任何一般物件型別的變數

Dim X As New Control

任何特定控制元件型別的變數

Dim X As New ListBox

任何特定控制元件的變數

Dim X As New lstName

常用物件

物件名稱

代表事項

Application物件

代表整個Excel應用程式

Debug物件

在執行時將輸出傳送到立即視窗

Name物件

代表單元格區域的定義名稱

Dialog物件

代表內建的Excel對話方塊

Range集合物件

代表某一單元格、某一行、某一列、某一選定區域

Window物件

代表一個視窗

Windows集合物件

代表Excel中所有Window物件的集合

Chart物件

工作薄中的圖示

Charts集合物件

指定的或者活動的工作薄中所有的圖表的集合

Sheets集合物件

指定或活動工作薄中所有工作表的集合,Sheets集合可以包括Chart物件或WordSheet物件

WorkBook物件

代表Excel工作薄

WorkSheet物件

代表一張工作表

Shape物件

代表圖層中的物件,例如自選圖形、任意多邊形、OLE物件或圖片

AutoFIle物件

代表指定工作表的自動篩選

Filters集合物件

由多個Fileter物件組成的集合,這些物件代表自動篩選區域內的所有的篩選

Filter物件

代表單個列的篩選

4、設定窗體尺寸及位置

以下兩種方式均可:

5、宣告變數及常量

變數宣告格式如下:

Dim|Private|Public|Static <變數1> as <型別1> [,<變數2> as <型別2> …..]

關鍵字

使用範圍

Dim

可以用在任何場合定義變數

Private

可以用於定義窗體級或模組級,不能在過程中使用

Public

用於窗體級或者模組級定義全域性變數,不能在過程內部使用

Static

只能在過程內部使用,用於定義靜態的區域性變數

注:沒有是上面的關鍵字來明確的變數叫做隱式變數,系統自動分配的資料型別為Variant,如DaysLeft=100.

 

Private name As String '宣告全域性變數

Private Sub A()

   Dim M As Range '宣告區域性變數

   Set M = Sheet1.Range("A1")

   M.Value = InputBox("請輸入:")

   name = Sheet1.Range("A1").Value

   MsgBox ("你輸入的內容" & name)

End Sub

 

宣告常量

Private Sub A()

   Const pi As Integer = 3.1415926

   Dim area As Double

   area = pi * 2 * 2

   Debug.Print ("面積為:" & area)

End Sub