Excel中VBA程式設計學習筆記(一)
1、註釋及編碼規則
註釋:
- 單引號:可以位於句子結尾或者單獨一行;
- Rem:單獨一行
編碼規則:
- 如果VB中的關鍵字是由多個英文字母組成,則系統自動將每個單詞的首字母轉換成大寫字母,其餘字母一律轉換成小寫字母。
- 對於使用者自定義的變數名、過程名、函式名,VB以第一次定義的為準,以後輸入的自動轉換成首次的形式。
- 如果在同一行寫多條語句,語句 間 要用冒號“:”隔開。例如:
Form1.Width = 300 : Form1.Caption = “VB!”
- 如果一條語句在一行寫不下,可以分多行寫,續航符為:一個空格後面跟一個下劃線“_”。
例如: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