You are on page 1of 17

目 錄

一、開啟開發人員之功能 ....................................................................................... 1

二、巨集安全性處理 ............................................................................................... 1

三、巨集之錄製 ....................................................................................................... 1

四、按鈕設計 ........................................................................................................... 2

五、開啟 VBA 進入 VBE ....................................................................................... 2

六、程式架構、編輯及除錯 ................................................................................... 3

七、基礎程式語法 ................................................................................................... 3

八、資料型態 ........................................................................................................... 4

九、算術運算子 ....................................................................................................... 5

十、迴圈 ................................................................................................................... 6

十一、條件分支之處理 ........................................................................................... 9

十二、陣列 ..............................................................................................................11

十三、副程式 ......................................................................................................... 12

十四、常使用的物件 ............................................................................................. 14

i
一、開啟開發人員之功能

開啟 Excel檔案選項自訂功能區主要索引標籤/□
v 開發人員確定

1 2 3 4

二、巨集安全性處理

巨集安全性巨集設定停用所有巨集(事先通知) 確定
**若已有就不需設定:巨集安全性信任位置新增瀏覽C:\Program
Files\Microsoft Office\Templates\確定)

三、巨集之錄製

1.開發人員以相對位置錄製錄製巨集
2.巨集名稱: 快速鍵確定
3.操作
4.開發人員停止錄製
5.另存成.xlsm

1
四、按鈕設計

1.插入表單控制項/按鈕拖曳區塊
2.選巨集名稱確定
3.修改按鈕區塊文字內容
簡易方法:
插入圖案選圖並拖曳完成圖形打入文字按滑鼠右鍵指定巨
集選對應的巨集確定

例 1(薪水條),練習如何錄製巨集、執行巨集及存檔

例 2(基本運算),練習如何錄製巨集、執行巨集及存檔

五、開啟 VBA 進入 VBE

開啟 VBA(Visual Basic Application)進入 VBE(Visual Basic Editor)


1.開發人員Vasiual Basic
(或按 Alt+F11 Excel 與 Visual Basic 互換鍵)
2.在專案視窗的 VBA Project 按滑鼠右鍵插入模組,進入 VBE 畫面(專
案視窗的模組會出現 Module1)
1 2 3

2
六、程式架構、編輯及除錯

語法
Sub 程序名稱()
程式碼(程式語法)
End Sub
**程式架構、編輯及除錯之詳細內容於課堂內說明。

七、基礎程式語法

語法 說明
MsgBox(“文字內容”) 顯示文字內容
InputBox(“文字內容”) 輸入資料之交談視窗
Dim 變數名稱 As 資料型態 指定變數之資料型態
‘文字內容 備註
Const 常數名稱 As 資料型態 = 常數值 常數宣告
(或 Const 常數名稱 = 常數值)

例3
Sub Ex1( )
MsgBox(“大家好”)
End Sub

例4
Sub Ex2( )
InputBox(“請輸入一個數字”)
End Sub

例5
Sub Ex3( )
InputBox(“請輸入一個數字”)
a= InputBox(“請輸入另一個數字”)
MsgBox(a)
End Sub
**程式要存成.xlsm 之存檔類型
3
八、資料型態

類型 資料型態 說明
布林 Boolean True/False
位元組 Byte 0~255
整數 Integer ‐32768~32767
長整數 Long ‐2147483648~2147483647
貨幣 Currency
單精度浮點數 Single
雙精度浮點數 Double
日期時間 Date
字串 String
物件 Object
通用型態 Variant 可以是任何資料類型

例 6:練習資料型態。
Sub Ex1()
Dim a As Integer
Dim b As Integer
a=5
b=a
MsgBox(b)
End Sub

4
九、算術運算子

運算子 說明
+ 加
‐ 減
* 乘
/ 除
^ 次方
\ 商數
Mod 餘數

例 7:練習算術運算。
Sub Ex1()
Dim a As Integer
Dim b As Integer
a=5
b=3
c=a*b
MsgBox ("a=" & a & ",b=" & b & ",a*b=" & c)
End Sub

5
十、迴圈

1.迴圈次數從起始值執行到結束值
語法
For 迴圈變數 = 起始值 to 結束值
敘述
Next

2.先判斷成立與否,不成立則執行,成立則不執行
語法
DO Until 條件
敘述
Loop

3.先執行,再判斷成立與否,不成立則執行,成立則不執行
語法
DO
敘述
Loop Until 條件

4. 先判斷成立與否,成立則執行,不成立則不執行
語法
DO While 條件
敘述
Loop

5. 先執行,再判斷成立與否,成立則執行,不成立則不執行
語法
DO
敘述
Loop While 條件

6
例 8:下載 ForDo.xlsx 練習迴圈 1+2+3+….+10=?
Sub Ex1()
Dim Total As Integer
Dim I As Integer
Total = 0
For I = 1 To 10
Total = Total + I
Next I
MsgBox ("(1)1+2+3+4+5+6+7+8+9+10 = " & Total)
Range("B1").Value = Total
End Sub

Sub Ex2()
Dim Total As Integer
Dim I As Integer
Total = 0
I=0
Do Until I = 10
I=I+1
Total = Total + I
Loop
MsgBox ("(2)1+2+3+4+5+6+7+8+9+10 = " & Total)
Range("B2").Value = Total
End Sub

Sub Ex3()
Dim Total As Integer
Dim I As Integer
Total = 0
I=0
Do
I=I+1
Total = Total + I
Loop Until I = 10
MsgBox ("(3)1+2+3+4+5+6+7+8+9+10 = " & Total)
Range("B3").Value = Total
End Sub

7
Sub Ex4()
Dim Total As Integer
Dim I As Integer
Total = 0
I=0
Do While I < 10
I=I+1
Total = Total + I
Loop
MsgBox ("(4)1+2+3+4+5+6+7+8+9+10 = " & Total)
Range("B4").Value = Total
End Sub

Sub Ex5()
Dim Total As Integer
Dim I As Integer
Total = 0
I=0
Do
I=I+1
Total = Total + I
Loop While I < 10
MsgBox ("(5)1+2+3+4+5+6+7+8+9+10 = " & Total)
Range("B5").Value = Total
End Sub

8
十一、條件分支之處理

1.單一條件
語法
If 條件 Then
敘述 1
End if
2.多個條件
語法
If 條件 1 Then
敘述 1
ElseIf 條件 2 Then
敘述 2
ElseIf 條件 3 Then
敘述 3
Else
敘述 4
End If

例 9:下載 ifcase.xlsx 利用 if 完成等第欄位


Sub test()
irow=2
For i= 1 to 42
irow=irow+1
If Range(“J” & irow).Value>=90 Then
Range(“K” & irow).Value=”甲”
ElseIf Range(“J” & irow).Value>=80 Then
Range(“K” & irow).Value=”乙”
ElseIf Range(“J” & irow).Value>=70 Then
Range(“K” & irow).Value=”丙”
ElseIf Range(“J” & irow).Value>=60 Then
Range(“K” & irow).Value=”丁”
Else
Range(“K” & irow).Value=”戊”
End If
Next i
End Sub
9
3. Select Case
語法
Select Case 變數
Case 條件值 1
敘述 1
Case 條件值 2
敘述 2
Case 條件值 3
敘述 3
Case Else
敘述 4
End Select
**Case 條件值之例子
Case 1,3,5
Case 2 to 5
Case Is>=5
Case “A”

例 10:下載 ifcase.xlsx 利用 Select case 完成等第欄位


Sub test()
irow=2
For i= 1 to 42
irow=irow+1
Select Case Range(“J” & irow).Value
Case Is >=90
Range(“K” & irow).Value=”甲”
Case Is >=80
Range(“K” & irow).Value=”乙”
Case Is >=70
Range(“K” & irow).Value=”丙”
Case Is >=60
Range(“K” & irow).Value=”丁”
Case Else
Range(“K” & irow).Value=”戊”
End Select
Next i
End Sub

10
十二、陣列

Option Base 1 宣告陣列起始為 1


Dim 陣列名稱( ) As 資料型態 宣告陣列大小
Array(元素 1,元素 2,元素 3,….) 新增陣列

例 11:練習陣列,課堂內說明。

11
十三、副程式

VBA 之函數
字串函數 Replace(字串,搜尋字串, DateDiff(單位,日期 1,日期
UCase(字串) 取代字串) 2)
將小寫轉大寫 將搜尋字串換成取代字串 兩個日期的單位差
Lcase(字串) String(次數,字串) Now
將大寫轉小寫 依指定的次數重複字串 回傳現在日期時間
StrConv(字串,轉變類型) Date
數值函數
將字串轉換顯示方式 回傳現在日期
vbUpperCase 轉成大寫 Abs(數值) Time
vbLowerCase 轉成小寫 絕對值 回傳現在時間
vbProperCase 第一字大寫
Log(數值) Year(日期資料)
vbWide 轉成全形 述職的自然對數 Date 資料中的西元年
vbNarrow 轉成半形 Exp(數值) Month(日期資料)
以 e 為底的數值次方 Date 資料中的月
Len(字串) Sqr(數值) Day(日期資料)
字串字數 數值的平方根 Date 資料中的日
Left(字串,字數長度) Fix(數值) Hour(日期資料)
回傳從左到右指定字數 整數的部分,捨小數 Date 資料中的時
Right(字串,字數長度) Int(數值) Minute(日期資料)
回傳從右到左指定字數 不大於該數的最大整數 Date 資料中的分
Mid(字串,起始位置,字數 Round(數值,小數位數) Second(日期資料)
長度) 四捨五入留指定的位數, Date 資料中的秒
回傳從起始位置開始指定 Weekday(日期資料)
日期時間函數
字數 Date 資料中的星期
InStr(字串,搜尋字串) DateAdd(單位,數值,日期)
其他函數
字串在搜尋字串第幾位置 日期加上單位數值後的日
InStrRev(字串,搜尋字串) 期 RGB(紅數值,綠數值,藍數
字串在反向搜尋字串第幾 單位 yyy 年,q 季,m 月,y 值) 紅,綠,藍顏色值 0~255
位置 年,d 日,w 週日,ww 週,h
trim(字串) 時,n 分,s 秒
將字串左右多餘空白移除

12
例 12:下載 function.xlsx,練習函數,
Sub Ex()
Dim a As integer
Dim b As String
Dim c As integer
Dim d As integer
Dim e As Date
Dim F As Date
a=Len(“VBA”)
b=Trim(“ VBA “)
c=Len(b)
d=Round(23.59,1)
e=Now
f=Year(e)
End Sub

13
十四、常使用的物件

物件名稱 說明
Range(“儲存格位址”) 儲存格
Cells(列號,欄號) 儲存格
Worksheet 工作表
Workbook 活頁簿
Window Excel 視窗
Application Excel 相關設定
**物件的屬性(或方法)在物件後方加上.屬性(或方法)

1.Range
*常見之屬性:
Value(值),Address(位址),Font(字型),Borders(四邊框線集合,可再加下層
屬性 Weight,Color,LineStyle),Name (儲存格範圍名稱),Interior (儲存格格
式),RowHeight(),Row(第幾列),Column(第幾欄),Rows(範圍列),
Columns(範圍欄),Height(儲存格高度),Width(儲存格寬度),End(方向最終
儲存格集合),Formula(儲存格公式),

例 13:下載 formula.xlsx 完成總分欄位


Sub formula1()
Range("E2:E16").FormulaR1C1 = "=RC[‐2]+RC[‐1]"
End Sub

*常見之方法:
Clear(清除),Delete(刪除),Selection(選取多格),ActiveCell(只選單一格),
AutoFilter(篩選功能),AddComment(註解內容),ClearComments(清除註解
內容),Merge(合併儲存格),UnMerge(解除合併儲存格),Insert(插入儲存
格),Copy(複製貼上儲存格),Cut(剪下貼上儲存格)

例 14:下載 border.xlsx 練習
Sub Test1()
Range("B2:C2").Borders.LineStyle = xlContinuous
‘B2 到 C2 加一般框線
End Sub

14
Sub Test2()
Range("D2:E2").Borders(xlEdgeTop).Weight = xlThin
Range("D2:E2").Borders(xlEdgeTop).LineStyle = xlDot
‘D2 到 E2 上方加細框線,再用點線顯示
End Sub

Sub Test3()
Range("A2").Borders(xlDiagonalUp).Color = vbRed
‘A2 加上右上往左下紅線
End Sub

2. Worksheets
*常見之屬性:
Index(回傳工作表索引編號),Previous(回傳左邊工作表物件),Next(回傳右
邊工作表物件),Count(工作表個數),Name (工作表名稱),UsedRange(已使
用儲存格範圍),Visible(顯示或隱藏)
*常見之方法:
Select(選取工作表),Delete(刪除工作表),Add(插入工作表),Copy(複製工
作表),Move(移動工作表),PrintOut(列印工作表),PrintPreview(預覽列印
工作表) ,Activate(啟動工作表)

3. WorkBooks
*常見之屬性:
Open(開啟活頁簿),Count(活頁簿個數),Name(活頁簿名稱),FullName(路
徑及檔名)
*常見之方法:
Add(新增活頁簿),Svae(儲存活頁簿),SaveAs(將活頁簿另存),PrintOut(列
印活頁簿),PrintPreview(預覽列印活頁簿),Close(關閉活頁簿)

**
WorkBooks(“路徑\活頁簿名稱”).Close(True)存檔再關檔
WorkBooks(“路徑\活頁簿名稱”).Close(False)不存檔就關檔

例 15:下載 object.xlsx 練習物件


Sub Ex1()
Range("A3").Copy Range("A12") ‘將儲存格 A3 複製到儲存格 A12
End Sub

15
Sub Ex2()
Range("A12").Cut Range("A13") ‘將儲存格 A12 剪貼到儲存格 A13
End Sub

Sub Ex3()
Range("A2:A5").Copy Range("A15")
‘將儲存格範圍 A2 到 A5 複製到儲存格 A15 起點
End Sub

Sub Ex4()
Worksheets(2).Activate ‘開啟工作表 2
End Sub

Sub Ex5()
Worksheets(1).Select ‘開啟工作表 1
End Sub

Sub Ex6()
Worksheets(1).Copy After:=Worksheets(2)
‘將第 1 工作表複製到工作表 2 後面
End Sub

Sub Ex7()
Worksheets(3).Visible = False ‘隱藏第 3 張工作表
End Sub

Sub Ex8()
Worksheets.Add
‘在目前工作表前加新工作表
End Sub

Sub Ex9()
Workbooks(1).Save '存檔
End Sub

16

You might also like