-VBA是Visual Basic for Applications的縮寫 -是由Microsoft公司開發出的一種程式語言
-VBA用來設計Windows 應用程式。 -也是一種用來控制Office應用軟體巨集的工具。
-VBA與巨集兩者有何差別? -兩者都是以指令來啟動電腦執行某一特定工作。 -VBA就像一本書而巨集類似這本書的目錄。
在Access資料庫中的「模組(Module)」物件是撰寫VBA程式碼的場所,也是執行程式碼的地方。
VBA 下圖是Access資料庫模組的畫面:
VBA 模組工具列
-專案視窗 專案視窗含有「檢視程式碼」、「檢視物件」及「切換資料夾」三個切換標籤 VBA -專案視窗 專案視窗含有「檢視程式碼」、「檢視物件」及「切換資料夾」三個切換標籤
-屬性視窗 屬性視窗用來描述物件的特性,例如按鈕的標題名稱、前景/背景顏色、字型、字體大小、高度、寬度 VBA -屬性視窗 屬性視窗用來描述物件的特性,例如按鈕的標題名稱、前景/背景顏色、字型、字體大小、高度、寬度
-程式碼視窗 程式碼視窗用來撰寫程式碼的地方,也是VBA最重要的地方。
-監看視窗 監看視窗用來監看程式運算式執行的結果。 VBA -監看視窗 監看視窗用來監看程式運算式執行的結果。
VBA -監看視窗 使用「新增監看式」
-即時運算視窗 即時運算視窗除了用來顯示程式執行運算的結果外,還可以在視窗內輸入程式,並且立即執行 VBA -即時運算視窗 即時運算視窗除了用來顯示程式執行運算的結果外,還可以在視窗內輸入程式,並且立即執行
-區域變數視窗 區域變數視窗用於自動顯示出所有宣告在目前程序中的變數及變數值。 VBA -區域變數視窗 區域變數視窗用於自動顯示出所有宣告在目前程序中的變數及變數值。
-區域變數視窗 在區域變數設成中斷點,執行程式,區域變數會在視窗內自動顯示 VBA -區域變數視窗 在區域變數設成中斷點,執行程式,區域變數會在視窗內自動顯示
VBA -VBA的語法 -條件敘述(Choose) Choose(Index,Choice( ))根據Index的值,選擇對應的值。 其語法如下: Choose(Index, Choice( ))
VBA -VBA的語法 -條件敘述(Choose) Dim n As Integer Dim result As String n = 2 result = CStr(Choose(n, "Excel", "Access", "Word")) Debug.Print result 執行結果result= Access。
VBA -VBA的語法 -條件敘述(If..Then) If..Then:用於單一選擇敘述。 如If A Then B代表”如果A為真,就執行B”,相對地,”如果A為假,就不執行B”。 其語法如下: If condition Then statements
VBA -VBA的語法 -條件敘述(If..Then) Dim n,m,result As Integer n=16 m=14 if (n>m) then result=n+m End If 執行結果result=30。
VBA -VBA的語法 -條件敘述(If.Then.Else) -用於多重選擇敘述。 -如If A Then B Else C代表” 如果A為真,就執行B,若A為假, 則執行C”。
VBA -VBA的語法 n=16 m=14 if (n<m) then result=n+m Else result=n-m -條件敘述(If.Then.Else) Dim n,m,result As Integer n=16 m=14 if (n<m) then result=n+m Else result=n-m End If 執行結果result=2。
VBA -VBA的語法 Dim result As String month = 3 -條件敘述(If.Then.ElseIf) Dim n,month As Integer Dim result As String month = 3 n = Int(((month + 10) Mod 12) / 3) + 1 If n = 1 Then result = "Spring" ElseIf n = 2 Then result = "Summer" ElseIf n = 3 Then result = "Fall" ElseIf n = 4 Then result = "Winter" End If 執行結果result= "Spring" 。
VBA -VBA的語法 -條件敘述(IIf) IIf:根據條件式的敘述,傳回兩個物件中的一個。 其語法如下: IIf(Expression,TruePart, FalsePart)
VBA -VBA的語法 -條件敘述(IIf) Dim n,m,result As Integer n =20 m =30 result = IIf(n > m,n,m) 執行結果result=30。
VBA -VBA的語法 -條件敘述( Select Case) Select Case:用於多重選擇敘述。 其語法如下: Select [Case ] testexpression [Case expressionlist [statements ] ] [Case Else [elsestatements ] ] End Select
VBA -VBA的語法 -條件敘述( Select Case) Dim n As Integer Dim result As String Select Case n Case Is < 60 result = "F" Case 60 To 69 result = "D"
VBA -VBA的語法 -條件敘述( Select Case) Case 70 To 79 result = "C" result = "B" Case Else result = "A" End Select 執行結果result="B"
VBA -VBA的語法 -條件敘述(Switch) Switch:用於多重選擇敘述。 其語法如下: Switch(expression1,statement1[,expression2,statement2,.[,expressionn,statementn]])
VBA -VBA的語法 -條件敘述(Switch) Dim score, n As Integer Dim result As String n = Int((99 - score) / 10) + 1 result =Switch(n = 1,“A”,n = 2, "B", n = 3,"C",n = 4,"D",n >= 5,"F") 執行結果result="B"。
VBA -VBA的語法 -條件敘述(GoTo) GoTo:用於程式從甲處跳到乙處去執行。GoTo的用法是在GoTo後面接上標籤名稱(label),到跳躍程式則是在標籤名稱後面加上冒號(:)。 其語法如下: GoTo Line
VBA -VBA的語法 -條件敘述(GoTo) Dim m, n As Integer m = 66 n = 44 If (m > n) Then GoTo max Else Debug.Print n
VBA -VBA的語法 -條件敘述(GoTo) GoTo finish End If max: Debug.Print m finish: 執行結果66。
如果不使用 On Error 敘述區段,則所發生的任何 Run-Time 錯誤都是嚴重錯誤: VBA -VBA的語法 -條件敘述(On Error) On Error:用來停用錯誤處理常式。 如果不使用 On Error 敘述區段,則所發生的任何 Run-Time 錯誤都是嚴重錯誤: 其語法如下: On Error {GoTo [line | 0 | -1] |Resume Next }
VBA -VBA的語法 -重覆敘述(Do..Loop) Do..Loop:用於條件迴圈敘述。 其語法如下: Do Statements [Exit Do] Loop
VBA -VBA的語法 -重覆敘述(Do..Loop) m = 1 n = 10 Do result = result + m m = m + 1 If m > n Then Exit Do End If Loop Debug.Print result 執行結果result=55。
VBA -VBA的語法 -重覆敘述(Do..Loop) Do While..Loop:此類型是條件迴圈敘述,先檢查是否滿足測試運算式的條件,若滿足,才去執行迴圈。 其語法如下: Do While condition Statements [Exit Do] Loop
VBA -VBA的語法 -重覆敘述(Do..Loop) total = 30 leg = 80 r = 0 Do While (r <= leg / 4) c = total - r If ((2 * c + 4 * r) = leg) Then Debug.Print c Debug.Print r End If r = r + 1 Loop 執行結果(c=)20。(r=)10。
VBA -VBA的語法 -重覆敘述(Do..Loop) Do Until..Loop:此類型也是條件迴圈敘述,先檢查是否不滿足測試運算式的條件,若不滿足,才去執行迴圈。 其語法如下: Do Until condition Statements [Exit Do] Loop
VBA -VBA的語法 -重覆敘述(Do..Loop) Dim n, tmp(80), index As Integer Dim result As String n = 112 Do Until n = 0 tmp(index) = n Mod 2 n = Int(n / 2) index = index + 1 Loop
VBA -VBA的語法 Do While (index > 0) -重覆敘述(Do..Loop) index = index - 1 result = result & tmp(index) Loop Debug.Print result 執行結果result= 1110000(二進位值)。
VBA -VBA的語法 -重覆敘述(Do..Loop) Do..Loop While:此條件迴圈敘述,先執行迴圈,然後,再檢查是否滿足測試運算式的條件,若滿足,持續執行迴圈。 其語法如下: Do Statements [Exit Do] Loop While condition
VBA -VBA的語法 n = 24 -重覆敘述(Do..Loop) m= 16 Do temp = n Mod m n = m m = temp Loop While ( m<> 0) result = n 執行結果result=8(最大公因數)。
VBA -VBA的語法 -重覆敘述(Do..Loop) Do..Loop Until:此條件迴圈敘述先執行迴圈,然後,再檢查是否不滿足測試運算式的條件,若不滿足,才去執行迴圈。 其語法如下: Do Statements [Exit Do] Loop Until condition
VBA -VBA的語法 i = 1 s = 10 stans = "1234112234" ans = "1234113234" Do -重覆敘述(Do..Loop) i = 1 s = 10 stans = "1234112234" ans = "1234113234" Do If (Mid(stans, i, 1) = Mid(ans, i, 1)) Then result = result + 1 End If i = i + 1 Loop Until s < i Debug.Print result 執行結果result=9。
VBA -VBA的語法 For..Next:用於計算數值的迴圈。 - For..Next 其語法如下: For var=Vstart To Vend [step 增量或減量] [Statements] [Exit For] Next var
VBA -VBA的語法 For n=1 To 10 step 3 - For..Next sum=sum+n Next n
VBA -VBA的語法 For Each..Next:用於執行陣列的迴圈。 - For Each ..Next 其語法如下: For Each element In group [ statements ] [ Exit For ] [ statements ]Next [ element ]
VBA -VBA的語法 Dim n,result As Integer - For Each ..Next Dim ko( 4) As Integer ko(0)=10 ko(1)=20 ko(2)=30 ko(3)=40 For Each n In ko result = result + n Next 執行結果result =100。
VBA -VBA的語法 While.. Wend:當While後面的測試運算式為True時,就會去執行迴圈。 -While.. Wend 其語法如下: While condition [ statements ]Wend
VBA -VBA的語法 Dim n As Integer = 1 str =”Microsoft Office Access” -While.. Wend Dim str,result As String Dim n As Integer = 1 str =”Microsoft Office Access” While (n <= Len(str)) If (Asc(Mid(str,n,1)) < 97) Then result = result & LCase(Mid(str,n,1)) Else result = result & UCase(Mid(str,n,1)) End If n = n + 1 Wend 執行結果result= “mICROSOFT oFFICE aCCESS
VBA -VBA的語法 -With With:用於代替重複物件或結構。 其語法如下: With object [ statements ] End With
VBA -VBA的語法 -With With .Font .Name = "Arial" .Bold = True .Size = 8 End With
-VBA的語法 -結束或暫停敘述 結束或暫停敘述包含 -End -Exit -Stop
VBA -VBA的語法 -End End:用於終止程式的執行。 使用End語法有End、Private Sub..End Sub、With..End With、While.. Wend、If..Then..End If。
VBA -VBA的語法 -Exit Exit:用於離開執行迴圈程式。 使用Exit語法有Exit Do、Exit For、Exit Function、Exit Property、Exit Sub。
VBA -VBA的語法 -Stop Stop:用於暫停並閒置程式執行。 Stop不會關閉任何檔案或清除任何變數,這一點是Stop與end最大的不同。 。
-VBA的語法 -與程序有關的敘述 與程序有關的敘述包含 -Call -Function -Property -Sub
-VBA的語法 - Call Call:用於呼叫Sub 程序及Function 程序。 其語法如下: [Call] name
VBA -VBA的語法 - Function Function:用於宣告Function 程序名稱。 其語法如下: [{ Public | Protected | Friend | Protected Friend | Private }] Function name[(arglist)] [As type] [Implements interface.definedname ] [statements] [Exit Function] [statements] End Function
VBA -VBA的語法 - Property Property:用來宣告屬性(Property)的名稱以及用來儲存和擷取屬性值的屬性程序。 其語法如下: Property varname([ ByVal parameter list ]) [ As typename ] [ Implements interfacemember ] Get [ block ] End Get Set(ByVal value As typename ) End Set End Property
VBA -VBA的語法 -Sub Sub:用於宣告Sub程序名稱。 其語法如下: [{ Public | Protected | Friend | Protected Friend | Private }]Sub name [(arglist)] [ Implements interface.definedname] [statements] [Exit Sub] End Sub
-VBA具有物件導向觀念 VBA是以物件導向觀念為程式設計的重心,著重於物件的設計,並處理物件間的溝通,而利用類別來描述物件的特性。
-VBA具有物件導向觀念 瀏覽物件主要功能是用來搜尋物件並瀏覽物件的屬性與方法
VBA -VBA具有物件導向觀念 在VBA語法中,如何描述物件與屬性、方法的關係: 物件與屬性表示方法如下: 物件名稱.物件屬性 物件與方法表示方法如下: 物件名稱.物件方法
VBA -VBA程式設計 -開啟資料表
VBA -VBA程式設計 -開啟查詢
VBA -VBA程式設計 -開啟表單
VBA -VBA程式設計 -開啟報表
VBA -VBA程式設計 -開啟資料頁
-VBA程式設計 -開啟巨集 在DoCmd物件並沒有巨集指令用來開啟巨集,倒是可以將巨集轉換成模組
-VBA程式設計 -開啟巨集 將巨集轉換 成模組方法如下:
-VBA程式設計 -開啟巨集 將巨集轉換成模組方法如下:
-VBA程式設計 -開啟巨集 將巨集轉換成模組方法如下:
VBA -VBA程式設計 -開啟巨集 將「已轉換巨集-條件式巨集」的模組略微修改 Option Compare Database Function macro_open() On Error GoTo ko_Err DoCmd.OpenForm "學生成績表單", acNormal, "", "", , acNormal DoCmd.GoToRecord acForm, “學生成績 表單", acNext, 1
VBA -VBA程式設計 -開啟巨集 If (Forms!學生成績表單!總分 >= 240) Then DoCmd.OpenTable "學生成績資料表", acViewNormal, acEdit Beep End If DoCmd.Close acTable, "學生成績資料表" ko_Exit: Exit Function ko_Err: MsgBox Error$ Resume ko_Exit End Function
VBA -VBA程式設計 -開啟模組
VBA -VBA應用 -建立一個執行表單的模組
-VBA應用 -建立一個執行表單的模組 選項按鈕控制項屬性的設定值
-VBA應用 -建立一個執行表單的模組 指令按鈕控制項屬性的設定值:
-VBA應用 -建立一個執行表單的模組 指令按鈕建 立事件的過程:
-VBA應用 -建立一個執行表單的模組 指令按鈕建立事件的過程:
-VBA應用 -建立一個執行表單的模組 指令按鈕建立事件的過程:
-VBA應用 -建立一個執行表單的模組 指令按鈕 建立事件的過 程:
-VBA應用 -建立一個執行表單的模組 指令按鈕建立事件的過程:
-VBA應用 -建立一個執行表單的模組 點選「插入」>「模組」選項 :
-VBA應用 -建立一個執行表單的模組 出現「模組-Module1」:
-VBA應用 -建立一個執行表單的模組 在「模組-Module1」加入下列的程式:
-VBA應用 -建立一個執行表單的模組 將「模組-Module1」改成「模組-開啟表單」,並執行表單程式:
-VBA應用 -模組與表單搭配應用 建立「學生資料表單」的簡易表單
-VBA應用 -模組與表單搭配應用 在「下一筆」按鈕建立事件
-VBA應用 -模組與表單搭配應用 在「上一筆」按鈕建立事件
VBA -VBA應用 -模組與表單搭配應用 插入一個模組,在「模組-Module1」加入與Function open_form( )相同的程式碼,將Module1更名為「開啟資料表單」。
-VBA應用 -模組與表單搭配應用 執行結果:
-VBA應用 -下拉式方塊的使用 建立「下拉式資料表」內容如下:
-VBA應用 -下拉式方塊的使用 建立「下拉式表單」內容如下 :
-VBA應用 -下拉式方塊的使用 「下拉式方塊(Combo2)」的屬性 :
-VBA應用 -下拉式方塊的使用 「顯示資料表」指令按鈕建立事件 :
-VBA應用 -下拉式方塊的使用 「顯示資料表」指令按鈕建立事件 :
-VBA應用 -下拉式方塊的使用 「取消」指令按鈕建立事件 :
-VBA應用 -下拉式方塊的使用 執行的結果 :
-VBA應用 -下拉式方塊的使用 執行的結果 :
-VBA應用 -下拉式方塊的使用 執行的結果 :
-VBA應用 -清單方塊的使用 建立清單資料表的內容:
-VBA應用 -清單方塊的使用 建立「清單表單」的內容如下 :
-VBA應用 -清單方塊的使用 「清單方塊(List4)」的屬性 :
-VBA應用 -清單方塊的使用 「顯示資料表」指令按鈕建立事件 : 「顯示資料表」指令按鈕建立事件 :
-VBA應用 -清單方塊的使用 「顯示資料表」指令按鈕建立事件 : 「顯示資料表」指令按鈕建立事件 :
-VBA應用 -清單方塊的使用 「取消」指令按鈕建立事件 : 「取消」指令按鈕建立事件 :
-VBA應用 -清單方塊的使用 執行的結果 :
-VBA應用 -清單方塊的使用 執行的結果 :
-VBA應用 -清單方塊的使用 執行的結果 :
VBA -VBA應用 - 事件 -事件因果關係
VBA -VBA應用 - 事件 -什麼是「事件(Event)」? 事件是在Microsoft Access啟 動特定巨集指令在特定物件上產生 的事件。
VBA -VBA應用 - 事件 -滑鼠事件
VBA -VBA應用 - 事件 -鍵盤事件
VBA -VBA應用 - 事件 -視窗事件
VBA -VBA應用 - 事件 -時間事件
VBA -VBA應用 - 事件 -焦點事件
VBA -VBA應用 - 事件 -其他事件
-VBA應用 - 事件 -MouseDown的例子
-VBA應用 - 事件 -MouseDown的例子 加入程式碼:
-VBA應用 - 事件 -MouseDown的例子 加入程式碼:
-VBA應用 - 事件 -MouseDown的例子 加入程式碼:
-VBA應用 - 事件 -MouseDown的例子 加入Function open_form( )的程式碼 :
-VBA應用 - 事件 -MouseDown的例子 執行結果 : 按下滑鼠左鍵
-VBA應用 - 事件 -MouseDown的例子 執行結果 :
-VBA應用 - 事件 -KeyDown的例子
-VBA應用 - 事件 -KeyDown的例子 加入程式碼:
-VBA應用 - 事件 -KeyDown的例子 加入程式碼:
-VBA應用 - 事件 -KeyDown的例子 加入程式碼:
-VBA應用 - 事件 -KeyDown的例子 加入程式碼:
-VBA應用 - 事件 -KeyDown的例子 加入Function open_form( )的程式碼
-VBA應用 - 事件 -KeyDown的例子 執行結果 按下Shift鍵
-VBA應用 - 事件 -KeyDown的例子 執行結果