心智圖資源庫 VBA
VBA是一個強大的工具,可以幫助使用者自動化和最佳化Microsoft Office應用程式中的任務。
編輯於2024-04-10 14:10:09VBA
程式
程序構成
模組
流程
程式碼
物件
對象.屬性
對象.方法
實例:巨集的錄製
設定快速鍵
指定按鈕
指定常用工作列按鈕
設定安全級別
程式設計環境VBE
進入編輯器
Alt F11
開發工具—Visual Basic
右鍵工作表標籤—查看程式碼
開發工具—查看程式碼
主視窗
工程資源管理器
Excel對象
窗體對象
模組vs類模組
概念
儲存VBA程式碼
建立特定的類別或對象
建立後名稱
模組1、模組2...
類1、類2...
屬性視窗
程式碼視窗
立即視窗
選單列
工具列
簡單操作
模組添加與移除
編寫程式
幫助
基礎語法
資料類型
資料類型
Byte位元組型
1
0~255,整數
年齡
加班天數
Boolean布林型
2
邏輯判斷,True/False
Integer整數型
2
-2768~32767,整數
人數
%
Long長整數型
4
-2147483648~2147483647,整數
人口數
&
Single單精準度浮點型
4
-3.402823E38~-1.401298E-45
圓周率
!
Double雙精度浮點型
8
負數: -1.79769313486232E308~ -4.94065645841247E-324
正數:4.94065645841247E-324~1.79769313486232E308
基本工資
#
Currency貨幣型
8
-922,337,203,685,477.5808~922,337,203,685,477.5807
@
Decimal小數型
不含小數時: /-79,228,162,514,264,337,593,543,950,335
含小數時: /-7.9228162514264337593543950335
最小的非零值: /-0.0000000000000000000000000001
14
Date日期型
日期範圍:100 年 1 月 1 日 至 9999 年 12 月 31 日
時間範圍:0:00:00~23:59:59
8
日期
String字串型-變長
10 字串長度
0 ~約 20 億
姓名、工號
$
String字串型-定長
字串長度
1 ~約 65,400
$
Object
4
物件變量,用來引用對象
Variant
除定長String資料及使用者自訂類型外,可包含任何種類的數據
如果是數值,最大可達Double的範圍
如果是字符,與變長String範圍一致
使用者自訂
每個元素的範圍與它本身的資料類型的範圍相同
常數和變數
宣告變數
宣告多個變數
強制宣告變數
變數作用域
單一流程
Dim/Static,作用於本過程,本地變量
單一模組
Dim/Private,作用於所在模組,模組級變數
所有模組
Public,作用於所有模組,公告變量
變數賦值
資料型變數賦值
物件型變數賦值
常量
常量賦值
常量賦值
陣列
數組特徵
共享一個名字:數組名
多個同類型變數構成一個數組
元素按序排列儲存在數組中,透過索引號區分
數組是變數
聲明數組
數組維數
聲明動態數組
其他創建方式
Array函數
Split函數
Range函數
UBound/LBound函數
Join函數
數組寫入單元格
物件
屬性
相對性
方法
共享一個名字:數組名
運算符
算術
求和
-
求差,求相反數
*
求積
/
求商
\
整除
^
指數
Mod
取餘
比較
=
等於
表達式1=表達式2
當兩個表達式相等時傳回Ture,否則回傳False
小於
表達式1<表達式2
當表達式1小於表達式2時回傳Ture,否則回傳False
>
大於
表達式1>表達式2
當表達式1大於表達式2時回傳Ture,否則回傳False
小於或等於
表達式1<=表達式2
當表達式1小於或等於表達式2時傳回Ture,否則傳回False
>=
大於或等於
表達式1>=表達式2
當表達式1大於或等於表達式2時傳回Ture,否則傳回False
不等於
表達式1<>表達式2
當表達式1不等於表達式2時回傳Ture,否則回傳False
Is
比較兩個物件的引用變數
物件1 Is 物件2
當物件1和物件2引用相同的物件時傳回True,否則傳回False
Like
比較兩個字串是否匹配
字串1 Like 字串2
當字串1與字串2匹配時傳回Ture,否則回傳False
連接
兩邊表達式為文字字串,執行連接;數值執行計算
&
無論運算子左右的資料類型,執行連接運算
邏輯
And
與
表達式1 And 表達式2
表達式1和表達式2的值都為Ture,回傳Ture,否則回傳False
Or
或
表達式1 Or 表達式2
表達式1和表達式2的值其一為Ture均傳回Ture,否則傳回False
Not
非
Not 表達式
表達式的值為Ture,傳回False,否則回傳Ture
Xor
異或
表達式1 Xor 表達式2
當表達式1和表達式2的值不同時,回傳Ture,否則回傳False
Eqv
等價
表達式1 Eqv 表達式2
當表達式1和表達式2的值相同時,回傳Ture,否則回傳False
Imp
蘊含
表達式1 Imp 表達式2
表達式1的值為Ture,表達式2的值為False時傳回False,否則傳回Ture;相當於Not表達式1Or表達式2
通配符
*
代替任意多個字符
?
代替任意一個字符
#
代替任意一個數字
[charlist]
代替位於[charlist]中任一個字符
[!charlist]
代替不在[charlist]中任意一個字符
運算順序
括號
()
指數
^
求相反數
-
乘法除法
*,/
整除
\
取餘
Mod
加法減法
,-
字串連接
&,
比較運算
=,<>,<,>,<=,>=,Like,Is
邏輯
And
Or
Not
Xor
Eqv
Imp
內建函數
基本語句結構
常用語句
If...Then語句
Select Case語句
For...Next語句
Do While語句
Do Until語句
For Each...Next語句
GoTo語句
語句
基本流程
Sub過程
編寫位置
聲明Sub流程
執行Sub流程
作用域
公共過程
私有流程
Function過程
編寫位置
自訂函數
程式碼排版
縮排
短行
多行合併
註解
設定(解除)註解塊
常用對象
常用對象
Application
Excel應用程式
Workbook
工作薄
Worksheet
工作表
Range
單一單元格或單元格區域
Application
ScreenUpdating屬性
DisplayAlerts屬性
EnableEvents屬性
WorksheetFunction屬性
Application常用屬性
ActiveCell
目前活動儲存格
ActiveChart
目前活動工作簿中的活動圖表
ActiveSheet
目前活動工作簿中的活動工作表
ActiveWindow
目前活動視窗
ActiveWorkbook
目前活動工作簿
Charts
目前活動工作簿中的所有圖表工作表
Selection
目前活動工作簿中所有選取的對象
Sheets
目前活動工作簿中所有Sheet對象,包括普通工作表、圖表工作表、Ms Excel 4.0宏表工作表和Ms Excel 5.0對話框工作表
Worsheets
目前活動工作簿中的所有Worksheet物件(普通工作表)
Workbooks
目前所有開啟的工作簿
實例:Excel介面設定
Workbook
引用
索引號
名稱
常用操作
新增
打開
啟用設定
儲存
關閉
ThisWorkbook/ActiveWorkbook
Worksheet
引用
索引號或標籤名稱
代碼名稱
常用操作
新建工作表
更改工作表標籤
刪除工作表
啟動工作表
複製工作表
移動工作表
隱藏/顯示工作表
取得工作表數目
Sheets
Range
引用
單元格
屬性
內容
個數
地址
操作
選取儲存格
選擇性清除單元格
複製單元格區域
剪切單元格
刪除單元格
其他操作
引用整行
引用整列
Application物件的Union方法
Range物件的Offset屬性
Range物件的Resize屬性
Worksheet物件的UsedRange屬性
Range物件的CurrentRegion屬性
Range物件的End屬性
xlToLeft
向左,來源儲存格<Ctrl 左方向鍵>
xlToRight
向右,來源單元格<Ctrl 右方向鍵>
xlUP
向上,來源單元格<Ctrl 上方向鍵>
xlDown
向下,來源單元格<Ctrl 下方向鍵>
其他常見對象
名稱
單元格批註
美化單元格
字體
底紋
邊框
其他
實例:典型操作
建立工作簿
判斷工作簿是否打開
判斷工作簿是否存在
向關閉的工作薄錄入數據
隱藏活動工作表外所有工作表
大量新建工作表
批量對資料分類
將工作表儲存為新工作表
快速合併多表數據
匯總同資料夾下多工作簿數據
為工作表建立目錄
Excel事件
Worksheet事件
Worksheet事件列表
Activate
啟動工作表時發生
BeforeDoubleClick
雙擊工作表後,預設雙擊操作之前發生
BeforeRightClick
右鍵點選工作表後,預設右鍵操作之前發生
Calculate
重新計算工作表之後發生
Change
單元格發生變更時發生
Deactivate
由活動工作表變成不活動工作表時發生
FollowHyperlink
單機工作表中任意超連結時發生
PivotTableUpdate
更新資料透視表之後發生
SelectionChange
所選內容發生變更時發生
自動提示更改內容
選取對象
啟動工作表時運行程序
禁止選取其他工作表
Worksbook事件
Activate
啟動工作表時發生
AddinInstall
當工作簿作為載入巨集安裝時發生
AddinUninstall
當工作簿作為載入巨集卸載時發生
AfterXmlExport
在儲存或匯出指定工作簿中的XML資料之後發生
AfterXmlImport
在刷新現有XML資料連線或新的XML資料被匯入任一個開啟的工作簿後發生
BeforeClose
在關閉工作簿前發生,如果已更改,則此事件在詢問使用者是否儲存變更之前發生
BeforePrint
在列印指定工作簿或其中任何內容之前發生
BeforeSave
在儲存工作簿前發生
BeforeXmlExport
在儲存或匯出指定工作簿中XML資料之前發生
BeforeXmlImport
在刷新現有XML資料連線或新XML資料被匯入任一個開啟的工作簿前發生
Deactivate
在工作簿從活動狀態轉為非活動狀態時發生
NewSheet
在工作簿新建工作表時發生
Open
在開啟工作簿時發生
PivotTableCloseConnection
在資料透視表連線關閉之後發生
PivotTableOpenConnection
在資料透視表連接開啟之後發生
SheetActivate
在啟動任意工作表時發生
SheetBeforeDoubleClick
在雙擊任意工作表時(預設雙擊操作之前)發生
SheetBeforeRightClick
在右鍵點選任意工作表時活在圖示上繪製已變更的資料之後發生
SheetCalculate
在重新計算工作表時活在圖表上繪製更改的資料之後發生
SheetChange
在更改了任何工作表中的儲存格時發生
SheetDeactivate
當工作表從活動工作表變成不活動工作表時發生
SheetFollowHyperlink
當單擊工作簿中任何超連結時發生
SheetSelectionChange
任意工作表上選定區域發生變更時發生(圖表工作表例外)
Sync
當作為「文檔工作區」一部分的工作簿的本機副本與伺服器副本進行同步時發生
WindowActivate
啟動任意工作簿視窗時發生
WindowDeactivate
任意工作簿視窗由活動視窗變成不活動視窗時發生
WindowResize
調整任意工作簿視窗大小時發生
自動程式
MouseMove事件
Application方法
OnKey
OnTime
例:典型技巧
快速輸入數據
快速尋找數據
自動儲存文件
使用者介面設計
控制項
窗體控件
標籤
用於輸入和顯示靜態文字
分組框
用於組合其他多個控件
按鈕
用於執行巨集命令
複選框
選擇控件,可以多項選擇
選項按鈕
選擇,通常幾個選項按鈕用組合框合在一起使用,只能同時選擇其中一個
列錶框
顯示多個選項列表,可以從中選擇之一
組合框
提供可選擇的多個選項,可以選擇其中之一
捲軸
包括水平和垂直
微調控件
按一下控制項的箭頭選擇數值
ActiveX控件
使用者交互
InputBox函數
Application物件的InputBox方法
MsgBox函數
顯示按鈕
顯示圖示樣式
預設按鈕
對話方塊類型
傳回值
Application物件的FindFile方法
Application物件的GetOpenFilename方法
Application物件的GetSaveAsFilename方法
Application物件的FileDialog方法
使用者窗體
新增窗體
窗體屬性
新增窗體內控件
顯示窗體
手動
程式碼
模式
關閉窗體
手動
程式碼
使用控件
初始化窗體
命令按鈕
資料錄入
鍵盤控制控件
例:典型技巧及範例
問卷設計
勞工資訊管理
登陸窗體
程式碼調試與最佳化
錯誤
編譯錯誤
運行錯誤
邏輯錯誤
程式狀態
設計模式
運作模式
中斷模式
偵錯工具
中斷模式
運行錯誤
編譯錯誤
中斷執行
斷點設定
Stop語句
立即視窗
本機視窗
監視視窗
錯誤處理
Go Error GoTo標籤
On Error Resume Next
On Error GoTo 0
加快程式碼運行速度
變數設定
宣告變數為合適資料類型
盡量不適用Variant型數據
避免變數一直存在記憶體中
避免重複引用相同對象
with語句簡化
使用變數簡化引用對象
盡量使用函數
去掉多餘啟動和選擇
合理使用數組
關閉螢幕更新
關於本導圖