第20章 VBA
What is VBA? Visual Basic for Application (VBA) 設計一個Excel本身沒有內建的函數或副程式,開發巨集,或是設計成自動化資訊系統,如會計資訊系統等等。 語法基礎同 Visual Basic 有些功能被拿掉,Ex: 轉成執行檔、製作ActiveX元件
What is VBA? (cont’d) 巨集 Sub 函數或程序名稱( ) Dim x as ….. Dim y as ….. ..... x=……. y=……. End Sub 巨集
巨集實例 Sub UseFunction() Dim myRange As Range Set myRange = Worksheets("Sheet1").Range(“B3:E18") answer = Application.WorksheetFunction.Min(myRange) MsgBox answer End Sub
VBA編輯環境 ”工具/巨集/Visual Basic編輯器”或按Alt+F11。
VBA編輯環境 (cont’d) 選取專案名稱 (Ex: VB Project),按右鍵,設定此專案的屬性,可設定密碼。
Function or Subroutine 執行 ”插入/程序”。
執行巨集 “Alt+F8”,開啟巨集交談窗,選取一個巨集名稱來執行。
Function or Subroutine 實例 Public Function sumX(x As Integer) As Integer Dim i As Integer Dim temp As Integer temp = 0 For i = 1 To x temp = temp + i Next i sumX = temp End Function 在模組內新增~~~
Function or Subroutine 實例 選取任一儲存格,按一般工具列上的”插入函數”鈕,在”插入函數”交談窗中,選取類別為「使用者定義」類別。
VBA基本結構 Excel中常見的物件有按鈕、儲存格範圍、工作表等等,在程式中為了使用方便,將同型態的物件集合在一起,稱為物件集,其關鍵字為英文的複數型態,如Workbooks, Worksheets 例如想在 test.xls 的sheet1工作表中的B1儲存格放入數值8,可以這樣寫: Workbooks(“test.xls”).Worksheets(“sheet1”).Range(“B1”).Value=8 Application Workbook Worksheet Range
VBA基本結構 (cont’d) 在一般工具列上按瀏覽物件,可看到所有的物件類型。
VBA基本結構 (cont’d) 按右鍵,執行快顯功能表中的”說明”。
重要物件-Range Range(arg) 傳回代表單個儲存格或多個儲存格的 Range 物件,其中 arg 為範圍名稱。 Worksheets("Sheet1").Range(“B1").Value =Worksheets("Sheet1").Range("A6").Value Worksheets(1).Range(“C3:D4”).ClearContents 常用方法: ClearContents, Merge, UnMerge, Copy, PasteSpecial 常用屬性: Value, Formula, Count, Row, Column
重要物件-Cells 可用 Cells(row, column) 傳回單個儲存格,其中 row 為列索引,column 為欄索引。 Worksheets(1).Cells(1, 1).Value = 24 ActiveSheet.Cells(2, 1).Formula = "=Sum(B1:B5)“
VBA基本結構-事件 活頁簿或工作表上的常用事件如下。 http://support.microsoft.com/kb/291294/zh-tw
使用表單 執行”插入/自訂表單”
使用表單 (cont’d) Private Sub Workbook_Open() End Sub Load UserForm1 每次開啟此活頁簿檔案時就自動執行此表單 Private Sub Workbook_Open() Load UserForm1 UserForm1.Show End Sub
References Excel VBA 功能索引式參考手冊 http://www.books.com.tw/exep/prod/booksfile.php?item=0010287112