1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例

Slides:



Advertisements
Similar presentations
第 4 章 PHP 基本語法.
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
ooxx這個遊戲程式,非常的簡單只要你小時候會玩井字遊戲即可把電腦打敗,可以說是一種考智力取勝的遊戲。
課程名稱:程式設計 授課老師:________
第四章 控制结构.
程式語言(I)- Visual Basic 6.0 第 9 章 結構化程式設計
Access数据库程序设计 总复习.
高等医药院校药学类第三轮规划教材——大学计算机基础
第五章 数组.
四 VBScript编程基础.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Visual Basic程序设计.
BLANK overview.
程式語言Visual Basic 變數的可視範圍
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第10章VBA会计应用与实践 第11章会计凭证管理模块设计与实现
数组 第 6 章.
第5章 数组 Visual Basic程序设计.
Visual Basic程序设计 第七章 数组
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
統計圖表 選取儲存格範圍.
过程 第 7 章.
ASP动态网页设计实用教程 主讲教师: 开课单位:.
第12章 VBA编程 虽然Access的交互操作功能非常强大且易于掌握,但是在实际的数据库应用系统中,用户还是希望尽量通过自动操作达到数据库管理的目的。应用程序设计语言在开发中的应用,可以加强对数据管理应用功能的扩展。Office中包含Visual Basic for Application(VBA),VBA具有与Visual.
算法与程序设计.
Access VBA程序设计 本章重点 Access Basic编程语言 运算符、函数与表达式 Access Basic语句 模块的使用
第4章 程序控制结构与算法基础.
新觀念的 VB6 教本 第七章 讓程式轉彎的控制敘述.
第4章 基本的控制结构 4.1 顺序结构 4.2 选择结构程序设计 4.3 循环结构 4.4 综合实例 退出.
数学3(必修)—— 算 法 ALGORITHM 苏州大学数学科学学院 徐稼红
流程控制、陣列 台南市聖功女子高級中學 毛全良.
计算机程序设计强化复习 Visual Basic 6.0.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 教师:王 杨 电话:
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第3章 變數、資料型別與運算子 3-1 變數與資料型別的基礎 3-2 變數的命名與宣告 3-3 資料型別 3-4 運算式與運算子
第12章 VBA模块设计.
RWM600 (13.56MHz) Reader Antenna.
RWM600 (13.56MHz) Reader Antenna.
丙級電腦軟設-VB程式設計 資料來源:林文恭研究室 整理:張福生.
新觀念的 VB6 教本 第 6 章 資料型別.
PCR300 (13.56MHz) Reader RS232/USB.
第 8 章 过程.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
Visual Basic程序设计.
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
金融資訊管理 撰寫VBA的基本事項.
江西财经大学信息管理学院 《数据库应用》课程组2007
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
小结 郭清溥.
Ch04 VB.NET的流程控制 網頁程式設計.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
Excel高级功能培训 PSMT质量部 王新民
第四章 控制结构 1、顺序控制结构 2、选择结构 3、循环结构.
本节内容 Lua基本语法.
第5章 数组 5.1 数组概述 5.2 静态数组和动态数组 5.3 数组的基本操作 5.4 控件数组 5.5 数组在自定义数据类型中的应用.
算法与Visual Basic程序基础(二)
程序调试与错误处理.
Presentation transcript:

1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例 Introduction of VBA 1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例 1

1 巨集 「開發人員」索引標籤

錄製巨集 絕對位置錄製 vs. 相對位置錄製

2 資料型態 主要資料型態 宣告變數之資料型態 Boolean (布林) True or False Integer (整數) Data Type Value Boolean (布林) True or False Integer (整數) -32,768 to 32,767 Long (長整數) -2,147,483,648 to 2,147,483,647 Single (single-precision floating-point) (單精準浮點數) -3.402823E38 to 1.401298E45 Double (double-precision floating-point) (雙精準浮點數) -1.79769313486232E308 to 1.79769313486232E308 String (字串) Ex. “book 11” Variant Any data type 宣告變數之資料型態 Dim variable_x as Double Dim i, j, k as Integer ※ Dim originally (in BASIC) stood for Dimension, as it was used to define the dimensions of an array (陣列). However, Dim is now used to define any variable

陣列宣告 動態陣列宣告 資料型態轉換 Dim my_array(10) As Integer ‘ 一維陣列 (11個Integer空間) ※ Please refer to “Array, String, and Number.xlsm” 陣列宣告 Dim my_array(10) As Integer ‘ 一維陣列 (11個Integer空間) Dim my_Array2(10,20) As Double ‘ 二維陣列 (11x21個Double空間) 動態陣列宣告 Dim my_array3() as Double ' 不定大小的一維陣列 ReDim my_array3(100) as Double ' 重新宣告大小 資料型態轉換 CInt(expression), CLng(expression), CDbl(expression), CStr(expression) a = 100.3 ' a is a Double c = CInt(a) ' convert a to be an Integer c = 100 b = 60000 ‘ b is a Long s = CStr(b) ' convert a to be a String s = “60000”

字串聯結 (string concatenation) s1 = "Hello" & s s2 = "工作表" & "1" 字串處理函數 Len: 計算字串長度 x = Len("NTU_IB") ⇒ x = 6 Mid: 擷取固定長度字串 str = Mid("NTU_IB",1,3) ⇒ str = "NTU" Replace: 取代字串中的某字串 str = Replace("NTU_IB", "_", "3") ⇒ str = "NTU3IB" Split: 字串分割 str = Split("NTU_IB", "_") ⇒ str(0) = "NTU" and str(1) = "IB" StrComp: 字串比較 x = StrComp(str(0), str(1)) ⇒ x = 1 x = StrComp(str(0), "NTU") ⇒ x = 0

邏輯運算子 (logic operators) And、Or、Not x = 3 y = 2 aa = x >= 3 And y >= 2 ' aa is True bb = x >= 3 Or y <= 2 ' bb is True cc = x >= 3 And Not y >= 2 ' cc is False

3 物件、屬性、方法與事件 活頁簿 (Workbooks) and 工作表 (Worksheets) ThisWorkbook.Close ' 關閉目前使用的活頁簿 (即Excel 檔案) Workbooks("Array, String, and Number.xlsm").Close ' 關閉檔案名為 “Array, String, and Number.xlsm”的Excel 檔案 Workbooks.Open "C:\demo.xlsx" ' 開啟C:\demo.xlsx這個檔案 Worksheets("Sheet2").Activate   ' 切換至Sheet2工作表 ActiveWorkbook.Worksheets("工作表1").Columns("A:A"). EntireColumn.Select ' 選取目前活頁簿中的"工作表1"這個worksheet的 column A

在VBA中呼叫Excel提供的函數 Application.WorksheetFunction.Average(陣列名稱) ' 計算平均 ※ Please refer to “Call functions provided by Excel.xlsm” 在VBA中呼叫Excel提供的函數 Application.WorksheetFunction.Average(陣列名稱) ' 計算平均 Application.WorksheetFunction.StDev(陣列名稱) ' 計算標準差 Application.WorksheetFunction.SumProduct(矩陣1, 矩陣2) ' 計算乘積和 Application.WorksheetFunction.Average(Application.WorksheetFunction.Sum Product(矩陣1, 矩陣2)) ' 組合乘積和與平均兩個Excel提供的公式 Application.WorksheetFunction.NormSInv(Rnd()) ' 從標準常態分配中抽樣 ※ Rnd() is a VB function for drawing uniformly distributed random variables (In Excel, RAND() can do the same thing) ※ NormSInv() is a function provided by Excel ※ 注意若在VBA中組合NormSInv() 與 RAND() 兩個Excel函數如下 Application.WorksheetFunction.NormSInv(Application.WorksheetFunction.Rnd()) 雖然理論上可行,在寫程式時VBA不會出現錯誤訊息,但在跑程式時,會出現 “物件不支援此屬性或方法” 之錯誤訊息

專案 (Project) 與模組 (Module) ※ Please refer to “Macro in Module.xlsm” 專案 (Project) 與模組 (Module) 整個Excel檔 (或是說活頁簿) 就是一個project 錄製巨集時,會自動存在「Module1」內,可供任意工作表使用 可將類似功能的函式放在同一個模組中,例如處理字串的放在 「Module1」,處理計算的放在「Module2」 點選「Module1」,「檢視」,「屬性視窗」可修改Module的名字

物件 (Object) 屬性 (Property) 方法 (Method) 事件 (Event) ※ Please refer to “CommandButton and Checkbox.xlsm” 物件 (Object) Workbook、Worksheets、CommandButton、CheckBox都為物件 屬性 (Property) 屬性就是物件的特徵描述 物件的名字、值、長寬、顏色、其上顯示文字與字型等,均是其屬性 ※ 在設計模式下,對某個物件壓滑鼠右鍵,選 “內容”,可以看到此物件的屬性 方法 (Method) 方法就是對物件做動的函式 ThisWorkbook.Close其中Close即為Workbook的一個方法 事件 (Event) 按一個CommandButton1,即驅動 (trigger) 了CommandButton1_Click() 這個事件與其專屬的程式碼 ※ 當在VBA中打入任何的物件,之後再加 “.”,此時VBA會提供所有有關這 個物件的Property與Method供使用者選擇

4 陳述式與副函式 If-then, If-Then-Else, If-Then-ElseIf-Else ※ Please refer to “For and Do While.xlsm” If-then, If-Then-Else, If-Then-ElseIf-Else If 條件 Then     敘述 End If If 條件 Then     敘述 Else     敘述 End If If 條件 Then     敘述 ElseIf 條件 Then     敘述 ElseIf 條件 Then     敘述 Else     敘述 End If ※ “條件” 即為能產生Boolean結果的式子 (見 p. 7),“敘述”則為一般的程式碼

Do While…Loop Do …Loop Until For…Next Do While 條件 敘述 Loop For 數值變數 = 初始值 To 終止值 [Step 增量]     敘述 Next [數值變數]

Sub程序 Function程序 Event程序 Sub aaa () Range(“A1”) = 1 End Sub ※ Please refer to “Project and Module.xlsm” and “Function or Sub.xlsm” Sub程序 Sub aaa () Range(“A1”) = 1 End Sub Sub bbb (a, b) cells(1,1) = a + b End Sub or Function程序 Function f (a, b) f = a + b End Function Event程序 Sub CommandButton1_Click() aaa Call bbb(2, 4) c = f(1, 2) End Sub

Public vs. Private Private Sub 程序名稱 () Private Function 程序名稱 () or End Sub End Function 上述程序僅供同一模組或同一WorkSheet內之程序呼叫使用 Public Sub 程序名稱 () Public Function 程序名稱 () End Sub End Function 上述程序可供同一模組或同一WorkSheet與外部程序呼叫 ※ 沒有註明Private 就是 Public ※ Public 放在模組 (Module) 中,供各個工作表使用

GoTo 陳述式 ※ Please refer to “GoTo and Exit.xlsm” Sub ccc () If Range("A1") = 1 Then Range("B1") = 2 GoTo any_label_2 ‘跳到any_label_2這個位置 ElseIf Range("A1") = 2 Then GoTo any_label_1 '不再繼續進行If的指令,跳到any_label_1這個位置 Else Range("B1") = 3 GoTo any_label_2 '跳到any_label_2這個位置 End If any_label_1: MsgBox "GoTo any_label1" any_label_2: End Sub

跳離指令 Exit Do '強制離開Do Loop迴圈 Exit For '強制離開For Next迴圈 Exit Sub '強制離開Sub程序 Exit Function '強制離開Function程序 ‘Exit For 範例 For i = 1 To 20 Cells(i, 1) = i If i = 18 Then MsgBox "Exit For when i=18" Exit For End If Next i

使用者定義函數 (User-defined function) ※ Please refer to “User-Defined RMSE function.xlsm” 使用者定義函數 (User-defined function) 放在模組 (Module) 中的Function程序,可以類似Excel本身所提供的函數一樣,在Excel的Cells中被使用

5 其他注意事項 寫程式小技巧 變數名稱顧名思義 盡量使用Sub與Function程序使得程式的邏輯更清楚與有組織 鋸齒狀撰寫程式 時時加上註解 (「'」後加註解) 以幫助自己記得每行 (或每段) 程式碼 是要處理何事

6 範例 Implement the matrix addition Inputs: matrices A and B ※ Please refer to “Matrix Addition (use mouse to select input cells).xlsm” Implement the matrix addition Inputs: matrices A and B Output: C = A + B ※ Learning goals: 1. 如何讀入矩陣參數 2. 如何使用For-Next做nested loops

Implement the matrix multiplication ※ Please refer to “Matrix Multiplication (call Excel function MMULT).xlsm” Implement the matrix multiplication Inputs: matrices A and B Output: C = AB ※ Learning goals: 1. 如何呼叫使用Excel所提供的函式

Implement interchanging two rows ※ Please refer to “Interchange two rows.xlsm” Implement interchanging two rows Inputs: matrix A and row indices i, j Output: perform Ii,j for A ※ Learning goals: 1. 了解如何交換陣列中兩個entries或是rows之值的演算法