Excel 簡易實用巨集設計 巨集的錄製與執行 VBA與VB編輯器 流程控制基本指令 應用巨集程式範例

Slides:



Advertisements
Similar presentations
第一單元 建立java 程式.
Advertisements

計算機概論 第4章 基本視窗程式應用 4-1 程式語言簡介 4-2 演算法與流程圖 4-3 視窗程式語言設計 4-4 資料結構.
課程名稱:程式設計 授課老師:________
赋值语句与输入、输出语句.
Access数据库程序设计 总复习.
上課囉 職場甘苦談 小資男孩向錢衝 育碁數位科技 呂宗益/副理.
高等医药院校药学类第三轮规划教材——大学计算机基础
第五章 数组.
四 VBScript编程基础.
VBA应用开发与实例 李 辉 微软课程培训讲师. VBA应用开发与实例 李 辉 微软课程培训讲师.
Microsoft Excel 2000 試算表初階 中央大學 計算機中心 周小慧.
Chapter 5 迴圈.
Visual Basic程序设计.
BLANK overview.
Chapter 1 複習.
Visual Basic 2010 程式設計16堂特訓 第七堂 VB的迴圈流程控制.
課程名稱:程式設計 授課老師:________
Visual Basic 6.0 學習範本 第三章 基本資料型態.
第二章 Visual Basic语言基础.
講師:戴志華 國立台灣大學電機工程研究所 Visual Basic 程式設計 講師:戴志華 國立台灣大學電機工程研究所.
第10章VBA会计应用与实践 第11章会计凭证管理模块设计与实现
第5章 数组 Visual Basic程序设计.
第3章 變數、資料型別與運算子.
程式語言 -Visual Basic 變數、常數與資料型態.
遠東科技大學資訊工程系 王善揚 可嵌入物件題庫系統 設計與開發 遠東科技大學資訊工程系 王善揚
1 巨集 2 資料型態 3 物件、屬性、方法與事件 4 陳述式與副函式 5 其他注意事項 6 範例
統計圖表 選取儲存格範圍.
过程 第 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 综合实例 退出.
流程控制、陣列 台南市聖功女子高級中學 毛全良.
程式語言Visual Basic 重複結構 黃瀧輝 老師 Long Hwai,Huang.
Visual Basic 程序设计 教师:王 杨 电话:
6-1 For…Next迴圈敘述 6-2 While…End While迴圈敘述 6-3 Do…Loop迴圈敘述 6-4 巢狀迴圈敘述
第12章 VBA模块设计.
第3 章 VBScript的控制结构.
新觀念的 VB6 教本 第 6 章 資料型別.
第5章 Visual Basic控制结构 之 常用算法举例
PCR300 (13.56MHz) Reader RS232/USB.
广州市教育局教学研究室编写的 初中《信息技术》第二册第二章 《程序设计初步》
邏輯關係運算 == 等於 & 且 (logical and) ~= 不等於 | 或 (logical or) < 小於
算法与程序设计 周少品.
VB程序设计语言 主讲教师:王 杨.
VB程序设计语言 主讲教师:王 杨.
程式設計 Visual Basic簡介 週次:2 建國技術學院 資管系 饒瑞佶 2003年9月17日.
第一單元 建立java 程式.
程序设计基础 第 2 章 学习程序设计的基本方法: 多练 模仿.
程式語言(I)- Visual Basic 6.0 第 8 章 模組化程式設計I-副程式與自定函數.
For x = 0 To 9 For y = 0 To 9 z = *x + 10*y …… Next y
江西财经大学信息管理学院 《数据库应用》课程组2007
第三篇 Excel 2002 第六章 認識Excel 2002 第七章 深入Excel Excel 2002的功能特色
第2章 VB语言基础 本章要点: 数据类型 常量和变量 运算符表达式 函数.
小结 郭清溥.
经典算法之 冒 泡 排 序.
Visual Basic 程序设计教程.
Ch04 VB.NET的流程控制 網頁程式設計.
JAVA 程式設計 資訊管理系 - 網路組.
现代信息技术 微电子技术 计算机技术 传感技术 通信技术 处理、存储信息的技术 传感、采集技术 传递信息的技术
第二章、第三章错题分析.
期末考.
Excel高级功能培训 PSMT质量部 王新民
單元名稱:結構化程式設計 報告人 劉洲溶.
1位选手参加了歌唱比赛,评委们的评分如下:
顺序查找与二分查找复习.
算法与Visual Basic程序基础(二)
Presentation transcript:

Excel 簡易實用巨集設計 巨集的錄製與執行 VBA與VB編輯器 流程控制基本指令 應用巨集程式範例 1 3 4 2 台大計資中心 教學組 林淑芬

一. 何謂巨集(Macro)? 巨集(Macro)是將許多命令或操作過程記錄下來,彙總成單一按鈕動作或巨集指令以後只要呼叫此巨集,即可完成所有設定的命令或操作 巨集適合應用於重複性很高的操作,將重複性的操作錄製成巨集,可簡化操作過程 巨集是存放在Visual Basic模組中的一連串指令和函數

錄製新巨集

定義巨集名稱及快速鍵

相對參照與絕對參照

錄製完畢

執行巨集的方式 從巨集視窗中執行 利用巨集的快速鍵執行 製作巨集按鈕 設計文字藝術師按鈕 在工具列上設定巨集按鈕

從巨集視窗中執行

利用巨集的快速鍵執行

檢視表單工具列-選擇按鈕指令

為文字藝術師按鈕指定巨集

在工具列上設定巨集按鈕

將自訂按鈕拖移至工具列上

二.何謂VBA? VBA(Visual Basic for Application)係專門應用於Office中的程式語法,其主要架構及語法都與Visual Basic 相似 VB所發展的程式可一單獨在作業系統中執行, 而VBA則是為Excel、Access等 Office成員所量身訂做的語言工具

VB編輯器

錄製巨集所產生的VBA程式

新增VBA程式模組

VBA可用的資料型態 整數 Integer- 2Bytes 長整數 Long- 4Bytes 單精準浮點數 Single- 4Bytes 倍精準浮點數 Double - 8Bytes 金額數值型態 Currency - 8Bytes 字串 String 位元組 Byte - 1Bytes 日期 Date 邏輯 Boolean 任何型別 Variant - 16Bytes

三. 程式流程控制基本指令 選擇結構 迴圈結構 強迫跳離陳述式 Exit for Exit do If… Then…End If If… Then…Else…End If Select Case…End Select 迴圈結構 For…Next For Each…In…Next Do…Loop 強迫跳離陳述式 Exit for Exit do

If… Then…End If If 條件式 Then ….{條件式為True} End If

If… Then…Else…End If If 條件式 Then ….{條件式為True} Else ….{條件式為False}

For…Next迴圈 For 計次變數=起始值 To 終止值 (Step間隔值) …… Next 計次變數

Do…Loop陳述式 Do While|Until 條件式 …. Loop 或 Do Loop While|Until 條件式

NO Score 1 2 * 3 4 5 6 7 8 9 10

Sub redline() Dim I As Integer I = 1 Worksheets(1).Select AA = Range("A" & I).Value Do While AA <> "" If I Mod 2 <> 0 Then Rows(I).Interior.ColorIndex = 3 End If I = I + 1 Loop End Sub

Sub delstar() Dim I As Integer I = 1 Worksheets(1).Select AA = Range("A" & I).Value Do While AA <> "" If Range("B" & I).Value = "*" Then Rows(I).Delete Else I = I + 1 End If Loop End Sub

ID Name Address TEL A123456789 Alex A123456790 Test A123456791 A123456793 Good A123456794 Tom A123456795 A123456796 A123456797

兩個key都相同才刪 需先排序兩個key Sub delsame() Dim I As Integer I = 2 Worksheets(2).Select AA = Range("A" & I).Value BB = Range("B" & I).Value I = I + 1 Do While AA <> "" If Range("A" & I).Value = AA And Range("B" & I).Value = BB Then Rows(I).Delete Else End If Loop End Sub

計算key不重複的有幾筆 需先排序 Sub countunique() Dim I, count As Integer I = 2 count = 0 Worksheets(1).Select AA = Range("A" & I).Value I = I + 1 Do While AA <> "" If Range("A" & I).Value <> AA Then count = count + 1 End If Loop Range("M1").Value = count End Sub

多頁的明細資料匯總成一頁總表 Sub ALL() Dim i, j As Integer Dim sh As String i = 5 'Row beginning in TOTAL sheet For N = 1 To 5 'You must enter how many Sheet? sh = "sheet" & N Worksheets(sh).Select Value1 = Range("G2").Value Value2 = Range("D2").Value Value3 = Range("L2").Value Worksheets("TOTAL").Select ' TOTAL sheet Range("A" & i).Value = N Range("B" & i).Value = Value1 Range("C" & i).Value = Value2 Range("D" & i).Value = Value3 i = i + 1 Next End Sub

以Cells(i, j)將sheet表示為二維矩陣

矩陣相乘的程式碼 Sub Array_Mult() Dim i, j, k, temp As Integer Worksheets(1).Select For k = 1 To 3 For i = 1 To 3 temp= 0 For j = 1 To 2 temp = temp + (Cells(i + 2, j + 1) * Cells(j + 2, 4 + k)) Next j Cells(6 + i, k + 1) = temp Next i Next k End Sub

ChartNo ItemName Value1 0688522 ALB 4.7 Alpha-Fetoprotein 3.60 ALT 34 Anti-HBs Non-reactive(0.0) Anti-Hepatitis C Virus Non-reactive(0.05) AST 28 Aty.Lym. Bacteria - 0731146 14 Non-reactive(0.06) 13

較複雜的例子: 一個人多筆項目資料合併成一筆 chartno ALB Alpha- Fetoprotein ALT Anti-HBs Anti-Hepatitis C Virus Anti-HIV screening(EIA) 0688522 4.7 3.60 34 Non-reactive(0.0) Non-reactive(0.05) 0731146 4.4 14 Non-reactive(0.06) 0816764 13 Reactive(84.61) Non-reactive(0.16) 0970097 4.6 16 Reactive(90.64)

Sub Rearrange() Dim I, J, M, N As Integer I = 2 ' row number of sheet 1 M = 1 ' row number of sheet 2 N = 1 ' column number of sheet 2 Worksheets(1).Select ' original sheet the first record oldID = "" ID = Range("A" & I).Value Item = Range("B" & I).Value Value1 = Range("C" & I).Value Do While ID <> "" Worksheets(2).Select ' new sheet N = 1 If ID = oldID Then 'the same person Do While Item <> Cells(1, N) 'check the item equal or not N = N + 1 ' not equal, then next column Loop Cells(M, N) = Value1 ' equal item, write it

Else 'next person M = M + 1 ' write a new record to new sheet Cells(M, N) = ID Do While Item <> Cells(1, N) N = N + 1 Loop Cells(M, N) = Value1 End If Worksheets(1).Select 'original sheet get next record oldID = ID I = I + 1 ID = Range("A" & I).Value Item = Range("B" & I).Value Value1 = Range("C" & I).Value End Sub