當前位置:首頁 » 編程軟體 » excelvba高級編程

excelvba高級編程

發布時間: 2022-07-01 11:55:00

Ⅰ EXCEL2007VBA開發技術大全的內容框架

本書是一本Excel VBA綜合開發參考大全,書中幾乎囊括了使用Excel VBA開發Excel應用程序的全部知識,同時在講解中結合了大量實用並具有代表性的示例。
本書共23章,分為4個部分。各個部分涉及的技術既相互獨立,又相互聯系。書中逐步引導讀者深入學習並掌握Excel VBA的編程知識、方法和技巧,是Excel VBA愛好者和開發人員必備的案頭參考書。
第1部分 基礎入門篇
第1章介紹如何使用宏錄制器錄制宏,以及如何運行宏,並幫助讀者認識和定製VBA集成開發環境。
第 2 章介紹Excel 2007對象模型、Application(應用程序)、Workbook(工作簿)和Worksheet(工作表)等主要對象,著重介紹最常用的Range(區域)對象,以及一個非常有用,但往往被開發人員忽視的Name(名稱)對象。
第 3 章介紹標識符、運算符、表達式和數據類型等程序設計中的各種基本概念,結合筆者在Excel二次開發中的經驗,總結並提出了VBA代碼規范、提高VBA代碼運行效率的方法及各種有益的VBA編程習慣。
第2部分 鞏固提高篇
第4章介紹數組的基本概念,說明如何實現數組與Excel的Range及Name對象之間的交互,並且介紹如何使用幾個常用的數組內置函數和一些有用的自定義數組函數。
第5章介紹如何操作用戶窗體及ActiveX控制項和窗體控制項。
第6章全面說明Excel的事件過程的基本原理,並具體分析工作表、圖表和工作簿事件的使用方法。
第7章介紹如何創建兩種不同類型的圖表(嵌入式圖表和圖表工作表),以及如何編輯圖表系列,同時介紹如何使用數組賦值並為圖表添加標簽。
第8章介紹如何創建並操作數據透視表。
第9章介紹如何創建Excel表,並使用自動篩選和記錄單等對象,以及如何使用AdvanceFilter方法。
第10章分析並介紹各種不同類型的錯誤,以及如何編寫錯誤處理程序,然後介紹不同的錯誤調試工具及技術。
第 11 章全面講解功能區的基礎界面,並通過示例說明如何使用VBA訪問功能區及使用RibbonX代碼定製功能區。
第3部分 高級編程篇
第12章介紹如何在Excel 2007中創建和控制命令欄及快捷菜單。
第13章介紹結構化查詢語言SQL及其最常用的4種語句(SELECT、INSERT、UPDATE和DELETE),並介紹ADO中的幾個頂級對象,如何在Excel中使用ADO,並使用ADO訪問Access和Excel中的數據。
第14章詳細介紹順序、隨機及二進制文件,說明如何操作文件、文件夾,並使用文件系統對象FSO。
第15章介紹如何使用Excel VBA來實現Excel與Internet的交互。
第16章介紹XML的一些基礎知識,並說明如何實現使用VBA來實現XML的自動處理。
第17章詳細介紹類模塊的基礎知識,說明如何使用類模塊創建自定義對象,並使用類模塊捕獲應用程序事件和嵌入式圖表事件等。
第18章介紹Windows API的基礎知識,以及如何在Excel VBA中調用API實現凍結用戶窗體、獲取系統信息、捕獲按鍵狀態,改變用戶窗體樣式等操作。
第19章介紹不同類型的載入項,以及如何使用這些載入項。
第20章介紹使用不同方式與其他Office組件建立連接(晚期綁定和早期綁定),以及如何控制Word、Access及Outlook等組件。
第21章介紹VBE對象模型及其主要對象,以及如何操作VBProject中的各個對象、創建窗體組件並為VBE添加菜單項等。
第22章分析並介紹在編寫國際化應用程序中應該注意的問題,以及如何實現不同語言的切換。
第4部分 綜合系統篇
第23章通過兩個綜合系統實例綜合應用VBA的編程技術,使讀者可以快速提高編程水平。

Ⅱ 請推薦 幾本 excel vba方面的 ~~高級~~編程,應用的書

你去查找《Excel 2003高級VBA編程寶典》這本書吧。
電子版的也是有的。

Ⅲ excel怎麼用vba進行高級篩選

Sub篩選()
Setd=CreateObject("Scripting.Dictionary")
Fori=1To[a65536].End(3).Row
IfCells(i,1)=[b1]Then
Setd(Cells(i,1))=Cells(i,1)
EndIf
Next
t=d.items
[d1].Resize(d.Count,1)=Application.Transpose(t)
EndSub

Ⅳ 求Excel VBA教程百度雲

《Excel VBA教程》網路網盤免費下載

鏈接: https://pan..com/s/14vp_pstM90LBPhWlYBfxrw

提取碼: k2cu

Excel VBA教程

Ⅳ Excel里的VBA是什麼,有什麼用途

Excel里的VBA是Visual Basic的一種宏語言。VBA是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程序功能,特別是Microsoft Office軟體。也可說是一種應用程式視覺化的Basic 腳本

掌握了VBA,可以發揮以下作用:

1.規范用戶的操作,控制用戶的操作行為;

2.操作界面人性化,方便用戶的操作;

3.多個步驟的手工操作通過執行VBA代碼可以迅速的實現;

4.實現一些VB無法實現的功能。

5.用VBA製做EXCEL登錄系統。

6.利用VBA可以Excel內輕松開發出功能強大的自動化程序。

(5)excelvba高級編程擴展閱讀:

宏語言VBA 適用於在Office 2000 中的所有應用程序,包括Word 、 Excel、PowerPoint、Access、Outlook 以及Project。在Office 97 的各應用程序中,新增了Visual Basic 編輯器。這樣,用戶無論是在Excel 中,還是在Word 中以至是在Access 中建立和管理VBA 都具有統一的方法和標准。

VBA可以訪問許多操作系統函數並支持文檔打開時自動執行宏。這使得用這種語言寫計算機病毒成為可能。1990年代中後期,宏病毒成為了最流行的計算機病毒類型之一。其它的包括宏語言的項目,如OpenOffice.org,故意從其宏語言中排除了一些功能(如:自動執行)以避免破壞程序。然而,這一特性在很多事務中受到歡迎。

VBA 是基於Visual Basic 發展而來的,它們具有相似的語言結構。Visual Basic 是Microsoft 的主要圖形界面開發工具,VBA 5.0 (亦即VBA 97)則是Visual Basic 5.0 的子集。Visual Basic 是由Basic 發展而來的第四代語言。Visual Basic 作為一套獨立的 Windows 系統開發工具,可用於開發Windows 環境下的各類應用程序,是一種可視化的、面向對象的、採用事件驅動方式的結構化高級程序設計語言。它具有高效率、簡單易學及功能強大的特點。

Ⅵ excel中的vba是什麼意思,如何用

Visual
Basic
for
Applications(VBA)是Visual
Basic的一種宏語言,是微軟開發出來在其桌面應用程序中執行通用的自動化(OLE)任務的編程語言。主要能用來擴展Windows的應用程式功能,特別是Microsoft
Office軟體。也可說是一種應用程式視覺化的Basic
腳本。該語言於1993年由微軟公司開發的的應用程序共享一種通用的自動化語言——Visual
Basic
For
Application(VBA),實際上VBA是寄生於VB應用程序的版本。微軟在1994年發行的Excel5.0版本中,即具備了VBA的宏功能。
掌握了VBA,可以發揮以下作用:
1.規范用戶的操作,控制用戶的操作行為;
2.操作界面人性化,方便用戶的操作;
3.多個步驟的手工操作通過執行VBA代碼可以迅速的實現;
4.實現一些VB無法實現的功能。
5.用VBA製做EXCEL登錄系統。
6.利用VBA可以Excel內輕松開發出功能強大的自動化程序。
使用excel
vba推薦您幾本教材:
1、《[Excel.VBA程序開發自學寶典》
2、《Excel.VBA實戰技巧精粹》
3、《Excel
2003/2007/2010高級VBA編程寶典》

Ⅶ 中文版Excel 2010高級VBA編程寶典的目錄

第i部分 excel基礎知識
第1章 excel 2010的起源
1.1 電子表格軟體的簡史
1.1.1 最初的起源:visicalc
1.1.2 lotus 1-2-3
1.1.3 quattro pro
1.1.4 microsoft excel
1.1.5 當前面臨的競爭
1.2 excel 對開發人員的重要性
1.3 excel在microsoft戰略中的角色
第2章 excel概述
2.1 關於對象的思考
2.2 工作簿
2.2.1 工作表
2.2.2 圖表工作表
2.2.3 xlm宏工作表
2.2.4 excel 5/95對話框編輯表
2.3 excel的用戶界面
2.3.1 功能區的引入
.2.3.2 快捷菜單和浮動工具欄
2.3.3 對話框
2.3.4 鍵盤快捷鍵
2.3.5 智能標記
2.3.6 任務窗格
2.4 自定義屏幕顯示
2.5 數據錄入
2.6 公式、函數和名稱
2.7 選擇對象
2.8 格式
2.9 保護選項
2.9.1 保護公式以防被重寫
2.9.2 保護工作簿的結構
2.9.3 使用密碼來保護工作簿
2.9.4 使用密碼來保護vba代碼
2.10 圖表
2.11 圖示和smartart
2.12 資料庫訪問
2.12.1 工作表資料庫
2.12.2 外部資料庫
2.13 internet特性
2.14 分析工具
2.15 載入項
2.16 宏和編程
2.17 文件格式
2.18 excel的幫助系統
第3章 公式的使用技巧
3.1 公式概述
3.2 計算公式
3.3 單元格和單元格區域引用
3.3.1 為什麼使用不是相對的引用
3.3.2 r1c1表示法
3.3.3 引用其他的工作表或工作簿
3.4 使用名稱
3.4.1 命名單元格和單元格區域
3.4.2 將名稱應用於現有的引用中
3.4.3 交叉名稱
3.4.4 命名列和行
3.4.5 名稱的作用范圍
3.4.6 命名常量
3.4.7 命名公式
3.4.8 命名對象
3.5 公式錯誤
3.6 數組公式
3.6.1 一個數組公式的示例
3.6.2 數組公式日歷
3.6.3 數組公式的優缺點
3.7 計數和求和技巧
3.7.1 計數公式的示例
3.7.2 求和公式的示例
3.7.3 其他計數工具
3.8 使用日期和時間
3.8.1 輸入日期和時間
3.8.2 使用1900年之前的日期
3.9 創建大公式
第4章 理解excel的文件
4.1 啟動excel
4.2 文件類型
4.2.1 excel文件格式
4.2.2 文本文件格式
4.2.3 資料庫文件格式
4.2.4 其他文件格式
4.3 模板文件的處理
4.3.1 查看模板
4.3.2 創建模板
4.3.3 創建工作簿模板
4.4 excel文件的內部情況
4.4.1 仔細分析一個文件
4.4.2 為什麼文件格式很重要
4.5 officeui文件
4.6 xlb文件
4.7 載入項文件
4.8 excel在注冊表中的設置
4.8.1 關於注冊表
4.8.2 excel的設置
第ii部分 excel應用程序開發
第5章 電子表格應用程序的內涵
5.1 電子表格應用程序
5.2 開發人員和終端用戶
5.2.1 開發人員的定義及其工作
5.2.2 電子表格應用程序用戶的分類
5.2.3 電子表格應用程序的客戶
5.3 用excel解決問題
5.4 基本的電子表格應用程序類型
5.4.1 快捷但質量不高的電子表格應用程序
5.4.2 自己創作、自己使用的電子表格應用程序
5.4.3 單用戶電子表格應用程序
5.4.4 義大利面條式電子表格應用程序
5.4.5 實用電子表格應用程序
5.4.6 包含工作表函數的載入項電子表格
5.4.7 單元塊預算式電子表格應用程序
5.4.8 假設分析模型式電子表格應用程序
5.4.9 數據存儲和訪問電子表格應用程序
5.4.10 資料庫前端電子表格應用程序
5.4.11 統包式電子表格應用程序
第6章 電子表格應用程序開發的基礎
6.1 應用程序的開發步驟
6.2 確定用戶需求
6.3 規劃滿足用戶需求的應用程序
6.4 確定最合適的用戶界面
6.4.1 創建自定義的功能區
6.4.2 創建自定義的快捷菜單
6.4.3 創建快捷鍵
6.4.4 創建自定義對話框
6.4.5 在工作表上使用activex控制項
6.4.6 執行開發的成果
6.5 關心終端用戶
6.5.1 測試應用程序
6.5.2 盡量完善應用程序的安全性
6.5.3 讓應用程序變得美觀和直觀
6.5.4 創建用戶幫助系統
6.5.5 將開發工作進行歸檔
6.5.6 將電子表格應用程序分發給用戶
6.5.7 在需要的時候更新電子表格應用程序
6.6 其他開發問題
6.6.1 用戶安裝的excel版本
6.6.2 語言問題
6.6.3 系統速度
6.6.4 視頻模式
第iii部分 理解vba
第7章 vba概述
7.1 basic的一些基本背景
7.2 關於vba
7.2.1 對象模型
7.2.2 vba與xlm的對比
7.3 vba的基礎知識
7.4 visual basic編輯器概述
7.4.1 顯示excel的「開發工具」選項卡
7.4.2 激活vbe
7.4.3 vbe窗口
7.5 使用「工程資源管理器」窗口
7.5.1 添加新的vba模塊
7.5.2 移除vba模塊
7.5.3 導出和導入對象
7.6 使用「代碼」窗口
7.6.1 窗口的最小化和最大化
7.6.2 vba代碼的存儲
7.6.3 vba代碼的輸入
7.7 vbe環境的定製
7.7.1 使用「編輯器」選項卡
7.7.2 使用「編輯器格式」選項卡
7.7.3 使用「通用」選項卡
7.7.4 使用「可連接的」選項卡
7.8 宏錄制器
7.8.1 宏錄制器實際記錄哪些內容
7.8.2 相對模式還是絕對模式
7.8.3 選項的錄制
7.8.4 清理己錄制的宏
7.9 關於對象和集合
7.9.1 對象層次結構
7.9.2 關於集合
7.9.3 對象的引用
7.10 屬性和方法
7.10.1 對象的屬性
7.10.2 對象的方法
7.11 comment對象示例
7.11.1 查看有關comment對象的幫助
7.11.2 comment對象的屬性
7.11.3 comment對象的方法
7.11.4 comments集合
7.11.5 關於comment屬性
7.11.6 comment對象中的對象
7.11.7 確定單元格中是否含有comment對象
7.11.8 添加新的comment對象
7.12 一些有用的應用程序屬性
7.13 range對象的使用
7.13.1 range屬性
7.13.2 cells屬性
7.13.3 offset屬性
7.14 關於對象的更多信息
7.14.1 需要牢記的基本概念
7.14.2 學習有關對象和屬性的更多信息
第8章 vba編程基礎
8.1 vba語言元素概覽
8.2 注釋
8.3 變數、數據類型和常量
8.3.1 數據類型的定義
8.3.2 聲明變數
8.3.3 變數的作用域
8.3.4 常量的使用
8.3.5 字元串的使用
8.3.6 日期的使用
8.4 賦值語句
8.5 數組
8.5.1 數組的聲明
8.5.2 多維數組的聲明
8.5.3 動態數組的聲明
8.6 對象變數
8.7 用戶自定義數據類型
8.8 內置函數
8.9 對象和集合的處理
8.9.1 with-end with結構
8.9.2 for each-next結構
8.10 代碼執行的控制
8.10.1 goto語句
8.10.2 if-then結構
8.10.3 select case結構
8.10.4 指令塊的循環
第9章 vba的sub過程
9.1 關於過程
9.1.1 sub過程的聲明
9.1.2 過程的作用域
9.2 執行sub過程
9.2.1 通過「運行子過程/用戶窗體」命令執行過程
9.2.2 從「宏」對話框執行過程
9.2.3 用ctrl+快捷鍵組合執行過程
9.2.4 從功能區執行過程
9.2.5 從自定義快捷菜單中執行過程
9.2.6 從另一個過程中執行過程
9.2.7 通過單擊對象執行過程
9.2.8 在事件發生時執行過程
9.2.9 從「立即窗口」執行過程
9.3 向過程中傳遞參數
9.4 錯誤處理技術
9.4.1 捕獲錯誤
9.4.2 錯誤處理示例
9.5 使用sub過程的實際示例
9.5.1 目標
9.5.2 工程需求
9.5.3 已經了解的信息
9.5.4 解決方法
9.5.5 需要了解哪些信息
9.5.6 初步的錄制工作
9.5.7 初始設置
9.5.8 代碼的編寫
9.5.9 排序過程的編寫
9.5.10 更多的測試
9.5.11 修復問題
9.5.12 實用程序的可用性
9.5.13 對工程進行評估
第10章 創建function過程
10.1 sub過程與function過程的比較
10.2 為什麼創建自定義的函數
10.3 介紹性的函數示例
10.3.1 在工作表中使用函數
10.3.2 在vba過程中使用函數
10.3.3 分析自定義函數
10.4 function過程
10.4.1 函數的作用域
10.4.2 執行function過程
10.5 function過程的參數
10.6 函數示例
10.6.1 無參數的函數
10.6.2 帶有一個參數的函數
10.6.3 帶有兩個參數的函數
10.6.4 使用數組作為參數的函數
10.6.5 帶有可選參數的函數
10.6.6 返回vba數組的函數
10.6.7 返回錯誤值的函數
10.6.8 帶有不定數量參數的函數
10.7 模擬excel的sum函數
10.8 擴展的日期函數
10.9 函數的調試
10.10 使用「插入函數」對話框
10.10.1 使用macrooptions方法
10.10.2 指定函數類別
10.10.3 手動添加函數說明
10.11 使用載入項存儲自定義的函數
10.12 使用windows api
10.12.1 windows api示例
10.12.2 確定windows目錄
10.12.3 檢測shift鍵
10.12.4 了解更多有關api函數的信息
第11章 vba編程示例和技巧
11.1 通過示例學習
11.2 處理單元格區域
11.2.1 復制單元格區域
11.2.2 移動單元格區域
11.2.3 復制大小可變的單元格區域
11.2.4 選中或者識別各種類型的單元格區域
11.2.5 提示輸入單元格中的值
11.2.6 在下一個空單元格中輸入一個值
11.2.7 暫停宏的運行以便獲得用戶選中的單元格區域
11.2.8 計算選中的單元格的數目
11.2.9 確定選中的單元格區域的類型
11.2.10 有效地循環遍歷選中的單元格區域
11.2.11 刪除所有空行
11.2.12 任意次數地復制行
11.2.13 確定單元格區域是否包含在另一個單元格區域內
11.2.14 確定單元格的數據類型
11.2.15 讀寫單元格區域
11.2.16 在單元格區域中寫入值的更好方法
11.2.17 傳遞一維數組中的內容
11.2.18 將單元格區域傳遞給variant類型的數組
11.2.19 按數值選擇單元格
11.2.20 復制非連續的單元格區域
11.3 處理工作簿和工作表
11.3.1 保存所有工作簿
11.3.2 保存和關閉所有工作簿
11.3.3 隱藏除選區之外的區域
11.3.4 同步工作表
11.4 vba技巧
11.4.1 切換布爾類型的屬性值
11.4.2 確定列印頁面的數量
11.4.3 顯示日期和時間
11.4.4 獲得字體列表
11.4.5 對數組進行排序
11.4.6 處理一系列文件
11.5 使用在代碼中的一些有用的函數
11.5.1 fileexists函數
11.5.2 filenameonly函數
11.5.3 pathexists函數
11.5.4 rangenameexists函數
11.5.5 sheetexists函數
11.5.6 workbookisopen函數
11.5.7 檢索已經關閉的工作簿中的值
11.6 一些有用的工作表函數
11.6.1 返回單元格的格式信息
11.6.2 會說話的工作表
11.6.3 顯示在保存或列印文件時的時間
11.6.4 理解對象的父對象
11.6.5 計算介於兩個值之間的單元格數目
11.6.6 確定行或列中最後一個非空的單元格
11.6.7 字元串與模式匹配
11.6.8 從字元串中提取第n個元素
11.6.9 拼寫出數字
11.6.10 多功能的函數
11.6.11 sheetoffset函數
11.6.12 返回所有工作表中數據的最大值
11.6.13 返回沒有重復的隨機整數元素的數組
11.6.14 隨機化單元格區域
11.7 windows api調用
11.7.1 確定文件的關聯性
11.7.2 確定磁碟驅動器信息
11.7.3 確定默認列印機的信息
11.7.4 確定視頻顯示器的信息
11.7.5 為應用程序添加聲音
11.7.6 讀寫注冊表
第iv部分 用戶窗體
第12章 多種自定義對話框的方法
12.1 創建用戶窗體之前需要了解的內容
12.2 使用輸入框
12.2.1 vba的inputbox函數
12.2.2 excel的inputbox方法
12.3 vba的msgbox函數
12.4 excel的getopenfilename方法
12.5 excel的getsaveasfilename方法
12.6 提示輸入目錄名稱
12.7 顯示excel的內置對話框
12.8 顯示數據記錄單
12.8.1 使得數據記錄單變得可以訪問
12.8.2 通過使用vba來顯示數據記錄單
第13章 用戶窗體概述
13.1 excel如何處理自定義對話框
13.2 插入新的用戶窗體
13.3 向用戶窗體中添加控制項
13.4 「工具箱」中的控制項
13.4.1 復選框
13.4.2 組合框
13.4.3 命令按鈕
13.4.4 框架
13.4.5 圖像
13.4.6 標簽
13.4.7 列表框
13.4.8 多頁
13.4.9 選項按鈕
13.4.10 refedit
13.4.11 滾動條
13.4.12 數值調節鈕
13.4.13 tabstrip
13.4.14 文本框
13.4.15 切換按鈕
13.5 調整用戶窗體的控制項
13.6 調整控制項的屬性
13.6.1 使用「屬性」窗口
13.6.2 共同屬性
13.6.3 滿足鍵盤用戶的需求
13.7 顯示用戶窗體
13.7.1 顯示無模式的用戶窗體
13.7.2 顯示基於變數的用戶窗體
13.7.3 載入用戶窗體
13.7.4 關於事件處理程序
13.8 關閉用戶窗體
13.9 創建用戶窗體的示例
13.9.1 創建用戶窗體
13.9.2 編寫代碼顯示對話框
13.9.3 測試對話框
13.9.4 添加事件處理程序
13.9.5 驗證數據的有效性
13.9.6 完成的對話框作品
13.10 理解用戶窗體的事件
13.10.1 了解事件
13.10.2 用戶窗體的事件
13.10.3 數值調節鈕的事件
13.10.4 數值調節鈕與文本框配套使用
13.11 引用用戶窗體的控制項
13.12 自定義「工具箱」
13.12.1 在「工具箱」中添加新頁
13.12.2 自定義或組合控制項
13.12.3 添加新的activex控制項
13.13 創建用戶窗體的模板
13.14 用戶窗體檢驗表
第14章 用戶窗體示例
14.1 創建用戶窗體式菜單
14.1.1 在用戶窗體中使用命令按鈕
14.1.2 在用戶窗體中使用列表框
14.2 從用戶窗體選中單元格區域
14.3 創建歡迎界面
14.4 禁用用戶窗體的關閉按鈕
14.5 改變用戶窗體的大小
14.6 從用戶窗體中縮放和滾動工作表
14.7 列表框技巧
14.7.1 向列表框控制項中添加條目
14.7.2 確定選中的條目
14.7.3 確定選中的列表框中的多個條目
14.7.4 單個列表框中的多個列表
14.7.5 列表框條目的轉移
14.7.6 在列表框中移動條目
14.7.7 使用多列的列表框控制項
14.7.8 使用列表框選中工作表中的行
14.7.9 使用列表框激活工作表
14.8 在用戶窗體中使用多頁控制項
14.9 使用外部控制項
14.10 使標簽動畫化
第15章 用戶窗體的高級技巧
15.1 無模式對話框
15.2 顯示進度條
15.2.1 創建獨立的進度條
15.2.2 使用多頁控制項顯示進度條
15.2.3 在不使用多頁控制項的情況下顯示進度條
15.3 創建向導
15.3.1 為向導設置多頁控制項
15.3.2 向向導用戶窗體中添加按鈕
15.3.3 編寫向導按鈕的程序
15.3.4 編寫向導中的相關代碼
15.3.5 使用向導執行任務
15.4 模仿msgbox函數
15.4.1 模仿msgbox函數:mymsgbox函數的代碼
15.4.2 mymsgbox函數的工作原理
15.4.3 使用mymsgbox函數
15.5 帶有可移動控制項的用戶窗體
15.6 沒有標題欄的用戶窗體
15.7 使用用戶窗體模擬工具欄
15.8 可調整大小的用戶窗體
15.9 用一個事件處理程序處理多個用戶窗體控制項
15.10 在用戶窗體中選擇顏色
15.11 在用戶窗體中顯示圖表
15.11.1 將圖表保存為gif文件
15.11.2 更改圖像控制項的picture屬性
15.12 使用戶窗體半透明
15.13 增強型數據記錄單
15.13.1 關於enhanced data form載入項
15.13.2 安裝enhanced data form載入項
15.14 用戶窗體上的數字推盤
15.15 用戶窗體上的電動撲克
第v部分 高級編程技巧
第16章 用vba開發excel實用程序
16.1 關於excel實用程序
16.2 使用vba開發實用程序
16.3 如何開發好的實用程序
16.4 text tools:實用程序剖析
16.4.1 text tools的背景
16.4.2 text tools的工程目標
16.4.3 text tools工作簿
16.4.4 text tools實用程序的工作原理
16.4.5 text tools實用程序的用戶窗體
16.4.6 mole1 vba模塊
16.4.7 userform1代碼模塊
16.4.8 提高text tools實用程序的效率
16.4.9 保存text tools實用程序的設置
16.4.10 實現撤消
16.4.11 顯示幫助文件
16.4.12 添加ribbonx代碼
16.4.13 工程驗收
16.4.14 理解text tools實用程序
16.5 獲取更多關於excel實用程序的知識
第17章 使用數據透視表
17.1 介紹性數據透視表示例
17.1.1 創建數據透視表
17.1.2 檢查錄制的數據透視表代碼
17.1.3 整理錄制的數據透視表代碼
17.2 創建更為復雜的數據透視表
17.2.1 創建數據透視表的代碼
17.2.2 更為復雜的數據透視表的工作原理
17.3 創建多個數據透視表
17.4 創建轉換的數據透視表
第18章 使用圖表
18.1 關於圖表
18.1.1 圖表的位置
18.1.2 宏錄制器和圖表
18.1.3 chart對象模型
18.2 創建嵌入式圖表
18.3 在圖表工作表上創建圖表
18.4 使用vba激活圖表
18.5 圖表的移動
18.6 使用vba使圖表取消激活
18.7 確定圖表是否被激活
18.8 從chartobjects或charts集合中刪除圖表
18.9 循環遍歷所有圖表
18.10 調整chartobjects對象的大小並對齊
18.11 導出圖表
18.12 修改圖表中使用的數據
18.12.1 基於活動單元格修改圖表數據
18.12.2 用vba確定圖表中使用的單元格區域
18.13 使用vba在圖表上顯示任意數據標簽
18.14 在用戶窗體中顯示圖表
18.15 理解圖表事件
18.15.1 使用圖表事件的一個示例
18.15.2 為嵌入式圖表啟用事件
18.15.3 示例:在嵌入式圖表上使用chart事件
18.16 vba制圖技巧
18.16.1 在整個頁面上列印嵌入式圖表
18.16.2 通過隱藏列來隱藏序列
18.16.3 創建未鏈接的圖表
18.16.4 用mouseover事件顯示文本
18.17 圖表動畫
18.17.1 滾動圖表
18.17.2 創建一個內擺線圖表
18.17.3 創建一個「時鍾」圖表
18.18 在不使用vba的情況下創建一個互動式圖表
18.18.1 獲取數據來創建一個互動式圖表
18.18.2 為互動式工作表創建選項按鈕控制項
18.18.3 為互動式圖表創建城市列表
18.18.4 創建互動式圖表的數據單元格區域
18.18.5 創建互動式圖表
18.19 使用迷你圖
第19章 理解excel的事件
19.1 excel可以監視的事件類型
19.1.1 理解事件發生的順序
19.1.2 事件處理程序存放的位置
19.1.3 禁用事件
19.1.4 輸入事件處理代碼
19.1.5 使用參數的事件處理程序
19.2 工作簿級別的事件
19.2.1 open事件
19.2.2 activate事件
19.2.3 sheetactivate事件
19.2.4 newsheet事件
19.2.5 beforesave事件
19.2.6 deactivate事件
19.2.7 beforeprint事件
19.2.8 beforeclose事件
19.3 檢查工作表事件
19.3.1 change事件
19.3.2 監視特定單元格區域的修改
19.3.3 selectionchange事件
19.3.4 beforedoubleclick事件
19.3.5 beforerightclick事件
19.4 檢查圖表事件
19.5 監視應用程序事件
19.5.1 啟用應用程序級別的事件
19.5.2 確定工作簿何時被打開
19.5.3 監視應用程序級別的事件
19.6 使用用戶窗體事件
19.7 訪問與對象無關聯的事件
19.7.1 ontime事件
19.7.2 onkey事件
第20章 與其他應用程序的交互
20.1 從excel中啟動應用程序
20.1.1 使用vba的shell函數
20.1.2 使用windows的shellexecute api函數
20.2 用excel激活應用程序
20.2.1 使用appactivate語句
20.2.2 激活一個microsoft office應用程序
20.3 運行「控制面板」對話框
20.4 在excel中使用自動化
20.4.1 通過使用自動化來使用外部對象
20.4.2 前期綁定與後期綁定
20.4.3 後期綁定的一個示例
20.4.4 從excel中控制word
20.4.5 從其他應用程序中控制excel
20.5 通過outlook發送個性化的電子郵件
20.6 從excel中發送電子郵件附件
20.7 使用sendkeys
第21章 創建和使用載入項
21.1 什麼是載入項
21.1.1 載入項與標准工作簿的比較
21.1.2 創建載入項的原因
21.2 理解excel的載入項管理器
21.3 創建載入項
21.4 載入項示例
21.4.1 為載入項示例添加描述信息
21.4.2 創建載入項
21.4.3 安裝載入項
21.4.4 測試載入項
21.4.5 發布載入項
21.4.6 修改載入項
21.5 比較xlam和xlsm文件
21.5.1 xlam文件中的vba集合成員
21.5.2 xlsm和xlam文件的可見性
21.5.3 xlsm和xlam文件的工作表和圖表工作表
21.5.4 訪問載入項中的vba過程
21.6 用vba操作載入項
21.6.1 addin對象屬性
21.6.2 作為工作簿訪問載入項
21.6.3 addin對象事件
21.7 優化載入項的性能
21.8 載入項的特殊問題
21.8.1 確保載入項已經安裝
21.8.2 從載入項中引用其他文件
21.8.3 為載入項檢測適用的excel版本
第vi部分 開發應用程序
第22章 使用功能區
22.1 功能區基礎
22.2 vba和功能區
22.2.1 訪問功能區控制項
22.2.2 使用功能區
22.2.3 激活選項卡
22.3 定製功能區
22.3.1 ribbonx的一個簡單示例
22.3.2 功能區的一個簡單示例(修改版)
22.3.3 ribbonx的另一個示例
22.3.4 功能區控制項演示
22.3.5 dynamicmenu控制項示例
22.3.6 更多關於功能區定製的內容
22.4 創建老式工具欄
22.4.1 excel 2010老式工具欄的局限性
22.4.2 創建工具欄的代碼
第23章 使用快捷菜單
23.1 命令欄簡介
23.1.1 命令欄的類型
23.1.2 列出快捷菜單
23.1.3 引用命令欄
23.1.4 引用命令欄中的控制項
23.1.5 命令欄控制項的屬性
23.1.6 顯示所有的快捷菜單項
23.2 使用vba定製快捷菜單
23.2.1 重置快捷菜單
23.2.2 禁用快捷菜單
23.2.3 禁用快捷菜單項
23.2.4 向「單元格」快捷菜單中添加一個新項
23.2.5 向快捷菜單中添加一個子菜單
23.3 快捷菜單與事件
23.3.1 自動添加和刪除菜單
23.3.2 禁用或隱藏快捷菜單項
23.3.3 創建一個上下文相關的快捷菜單
第24章 為應用程序提供幫助
24.1 excel應用程序的「幫助」
24.2 使用excel組件的幫助系統
24.2.1 為幫助系統使用單元格批註
24.2.2 為幫助系統使用文本框
24.2.3 使用工作表來顯示幫助文本
24.2.4 在用戶窗體中顯示幫助
24.3 在web瀏覽器中顯示「幫助」
24.3.1 使用html文件
24.3.2 使用一個mhtml文件
24.4 使用html幫助系統
24.5 將「幫助」文件與應用程序相關聯
第25章 開發面向用戶的應用程序
25.1 什麼是面向用戶的應用程序
25.2 loan amortization wizard
25.2.1 使用load amortization wizard
25.2.2 load amortization wizard的工作簿結構
25.2.3 load amortization wizard的工作原理
25.2.4 可以增強load amortization wizard的地方
25.3 應用程序開發概念
第vii部分 其他主題
第26章 兼容性問題
26.1 什麼是兼容性
26.2 兼容性問題的類型
26.3 避免使用新功能
26.4 在mac機器上是否可用
26.5 處理64位excel
26.6 創建一個國際化的應用程序
26.6.1 多語言應用程序
26.6.2 vba語言的考慮
26.6.3 使用本地屬性
26.6.4 系統設置識別
26.6.5 日期和時間設置
第27章 用vba處理文件
27.1 執行常見的文件操作
27.1.1 使用與vba文件相關的指令
27.1.2 使用filesystemobject對象
27.2 顯示擴展文件信息
27.3 文本文件的處理
27.3.1 打開文本文件
27.3.2 讀取文本文件
27.3.3 編寫文本文件
27.3.4 獲取文件序號
27.3.5 確定或設置文件位置
27.3.6 讀寫語句
27.4 文本文件操作示例
27.4.1 導入文本文件中的數據
27.4.2 將單元格區域的數據導出到文本文件中
27.4.3 將文本文件的內容導入到單元格區域中
27.4.4 記錄excel日誌的用法
27.4.5 篩選文本文件
27.4.6 導出單元格區域的數據為html格式
27.4.7 導出單元格區域到xml文件
27.5 壓縮解壓縮文件
27.5.1 壓縮文件
27.5.2 解壓縮文件
27.6 使用ado
第28章 使用visual basic組件
28.1 ide簡介
28.2 ide對象模型
28.3 顯示vba工程中的所有組件
28.4 列出工作簿中的所有vba過程
28.5 用更新版本替換模塊
28.6 使用vba編寫vba代碼
28.7 在設計時向用戶窗體中添加控制項
28.7.1 設計時與運行時的用戶窗體操作對比
28.7.2 在設計時添加100個命令按鈕
28.8 通過編程創建用戶窗體
28.8.1 一個簡單的運行時用戶窗體示例
28.8.2 一個有用(但是不簡單)的動態用戶窗體示例
第29章 理解類模塊
29.1 什麼是類模塊
29.2 示例:創建numlock類
29.2.1 插入類模塊
29.2.2 給類模塊添加vba代碼
29.2.3 使用numlockclass類
29.3 更多有關類模塊的信息
29.3.1 對象屬性編程
29.3.2 對象的方法編程
29.3.3 類模塊事件
29.4 示例:csv文件類
29.4.1 csvfileclass的類模塊級變數
29.4.2 csvfileclass的屬性過程
29.4.3 csvfileclass的方法過程
29.4.4 使用csvfileclass對象
第30章 使用顏色
30.1 指定顏色
30.1.1 rgb顏色系統
30.1.2 hsl顏色系統
30.1.3 轉換顏色
30.2 理解灰度模式
30.2.1 將彩色轉換為灰色
30.2.2 以灰度模式瀏覽圖表
30.3 顏色實驗
30.4 理解文檔主題
30.4.1 關於文檔主題
30.4.2 理解文檔主題顏色
30.4.3 顯示所有的主題顏色
30.5 使用shape對象
30.5.1 圖示的背景色
30.5.2 圖示和主題顏色
30.5.3 圖示示例
30.6 修改圖表顏色
第31章 有關excel編程的常見問題
31.1 獲得關於faq的信息
31.2 excel的一般問題
31.3 vbe
31.4 過程
31.5 函數
31.6 對象、屬性、方法和事件
31.7 用戶窗體
31.8 載入項
31.9 用戶界面
第viii部分 附錄
附錄a excel在線資源
附錄b vba語句和函數引用
附錄c vba錯誤代碼
附錄d 本書的下載文件包中的內容

Ⅷ 中文版Excel2007高級VBA編程寶典的目錄

第Ⅰ部分Excel基礎知識
第1章Excel2007的起源
1.1電子表格軟體的簡史
1.1.1最初的起源:VisiCalc
1.1.2Lotus1-2-3
1.1.3QuattroPro
1.1.4MicrosoftExcel
1.2Excel對開發人員的重要性
1.3Excel在Microsoft戰略中的角色
第2章Excel概述
2.1關於對象
2.2工作簿
2.2.1工作表
2.2.2圖表工作表
2.2.3XLM宏工作表
2.2.4Excel5/95對話框編輯表
2.3Excel的用戶界面
2.3.1功能區的引入
2.3.2快捷菜單
2.3.3對話框
2.3.4鍵盤快捷鍵
2.3.5智能標記
2.3.6任務窗格
2.4自定義屏幕顯示
2.5數據錄入
2.6公式、函數和名稱
2.7選擇對象
2.8格式
2.8.1數字格式
2.8.2樣式格式
2.9保護選項
2.9.1保護公式以防被重寫
2.9.2保護工作簿的結構
2.9.3運用密碼來保護工作簿
2.9.4使用密碼來保護VBA代碼
2.10圖表
2.11形狀和SmartArt
2.12資料庫訪問
2.12.1工作表資料庫
2.12.2外部資料庫
2.13Internet特性
2.14分析工具
2.14.1分級顯示
2.14.2分析工具庫
2.14.3數據透視表
2.14.4Solver
2.14.5XML特性
2.15載入項
2.16宏和編程
2.17文件格式
2.18Excel的幫助系統
第3章公式的使用技巧
3.1公式概述
3.2計算公式
3.3單元格和單元格區域引用
3.3.1為什麼使用不是相對的引用
3.3.2R1C1表示法
3.3.3引用其他的工作表或工作簿
3.4使用名稱
3.4.1命名單元格和單元格區域
3.4.2將名稱應用於現有的引用
3.4.3交叉名稱
3.4.4命名列和行
3.4.5名稱的作用范圍
3.4.6命名常量
3.4.7命名公式
3.4.8命名對象
3.5公式錯誤
3.6數組公式
3.6.1一個數組公式的例子
3.6.2數組公式日歷
3.6.3數組公式的優缺點
3.7計數和求和技巧
3.7.1計數公式的示例
3.7.2求和公式的示例
3.7.3其他計數工具
3.8使用日期和時間
3.8.1輸入日期和時間
3.8.2使用1900年之前的日期
3.9創建大公式
第4章理解Excel的文件
4.1啟動Excel
4.2文件類型
4.2.1Excel文件格式
4.2.2文本文件格式
4.2.3資料庫文件格式
4.2.4其他文件格式
4.3模板文件的處理
4.3.1查看模板
4.3.2創建模板
4.3.3創建工作簿模板
4.4Excel文件的內部情況
4.4.1仔細分析一個文件
4.4.2為什麼文件格式很重要
4.5QAT文件
4.6XLB文件
4.7載入宏文件
4.8Excel在注冊表中的設置
4.8.1關於注冊表
4.8.2Excel的設置
第Ⅱ部分Excel應用程序開發
第5章電子表格應用程序的內涵
5.1電子表格應用程序
5.2開發人員和終端用戶
5.2.1誰是開發人員
5.2.2電子表格應用程序用戶的分類
5.2.3電子表格應用程序的客戶
5.3用Excel解決問題
5.4基本的電子表格應用程序類型
5.4.1快捷但質量不高的電子表格應用程序
5.4.2自己創作、自己使用的電子表格應用程序
5.4.3單用戶電子表格應用程序
5.4.4義大利面條式電子表格應用程序
5.4.5實用電子表格應用程序
5.4.6包含工作表函數的載入宏電子表格
5.4.7單元塊預算式電子表格應用程序
5.4.8假設分析模型式電子表格應用程序
5.4.9數據存儲和訪問電子表格應用程序
5.4.10資料庫前端電子表格應用程序
5.4.11統包式電子表格應用程序
第6章電子表格應用程序開發的基礎
6.1確定用戶需求
6.2規劃滿足用戶需求的應用程序
6.3確定最合適的用戶界面
6.3.1創建自定義的功能區
6.3.2創建自定義的快捷菜單
6.3.3創建快捷鍵
6.3.4創建自定義的對話框
6.3.5在工作表上使用ActiveX控制項
6.3.6執行開發的成果
6.4使自己關心終端用戶
6.4.1測試應用程序
6.4.2盡量完善應用程序的安全性
6.4.3讓應用程序變得美觀和直觀
6.4.4創建用戶幫助系統
6.4.5將開發工作進行歸檔
6.4.6將電子表格應用程序分發給用戶
6.4.7在需要的時候更新電子表格應用程序
6.5其他開發問題
6.5.1用戶安裝的Excel版本
6.5.2語言問題
6.5.3系統速度
6.5.4視頻模式
第Ⅲ部分理解VBA
第7章VBA概述
7.1BASIC的一些基本背景
7.2關於VBA
7.2.1對象模型
7.2.2VBA與XLM的對比
7.3VBA的基礎知識
7.4VisualBasic編輯器概述
7.4.1顯示Excel的「開發工具」選項卡
7.4.2激活VBE
7.4.3VBE窗口
7.5使用「工程資源管理器」窗口
7.5.1添加新的VBA模塊
7.5.2移除VBA模塊
7.5.3導出和導入對象
7.6使用「代碼」窗口
7.6.1窗口的最小化和最大化
7.6.2VBA代碼的存儲
7.6.3VBA代碼的輸入
7.7VBE環境的定製
7.7.1使用「編輯器」選項卡
7.7.2使用「編輯器格式」選項卡
7.7.3使用「通用」選項卡
7.7.4使用「可連接的」選項卡
7.8宏錄制器
7.8.1宏錄制器實際記錄哪些內容
7.8.2相對模式還是絕對模式
7.8.3選項的錄制
7.8.4整理己錄制的宏
7.9關於對象和集合
7.9.1對象層次結構
7.9.2關於集合
7.9.3對象的引用
7.10屬性和方法
7.10.1對象的屬性
7.10.2對象的方法
7.11Comment對象示例
7.11.1查看有關Comment對象的幫助
7.11.2Comment對象的屬性
7.11.3Comment對象的方法
7.11.4Comments集合
7.11.5關於Comment屬性
7.11.6Comment對象中的對象
7.11.7確定單元格中是否含有Comment對象
7.11.8添加新的Comment對象
7.12一些有用的應用程序屬性
7.13Range對象的使用
7.13.1Range屬性
7.13.2Cells屬性
7.13.3Offset屬性
7.14關於對象的更多信息
7.14.1需要牢記的基本概念
7.14.2學習有關對象和屬性的更多信息
第8章VBA編程基礎
8.1VBA語言元素概覽
8.2注釋
8.3變數、數據類型和常量
8.3.1數據類型的定義
8.3.2聲明變數
8.3.3變數的作用域
8.3.4常量的使用
8.3.5字元串的使用
8.3.6日期的使用
8.4賦值語句
8.5數組
8.5.1數組的聲明
8.5.2多維數組的聲明
8.5.3動態數組的聲明
8.6對象變數
8.7用戶定義數據類型
8.8內置函數
8.9對象和集合的處理
8.9.1With-EndWith構造
8.9.2ForEach-Next構造
8.10代碼執行的控制
8.10.1GoTo語句
8.10.2If-Then構造
8.10.3SelectCase構造
8.10.4指令的循環塊
第9章VBA的Sub過程
9.1關於過程
9.1.1Sub過程的聲明
9.1.2過程的作用域
9.2執行Sub過程
9.2.1通過「運行子過程/用戶窗體」命令執行過程
9.2.2從「宏」對話框執行過程
9.2.3用Ctrl+快捷鍵組合執行過程
9.2.4從功能區執行過程
9.2.5從自定義快捷菜單中執行過程
9.2.6從另一個過程執行過程
9.2.7通過單擊對象執行過程
9.2.8在事件發生時執行過程
9.2.9從「立即窗口」執行過程
9.3向過程中傳遞參數
9.4錯誤處理技術
9.4.1捕獲錯誤
9.4.2錯誤處理示例
9.5使用Sub過程的實際例子
9.5.1目標
9.5.2工程需求
9.5.3已經了解的信息
9.5.4著手處理
9.5.5需要了解哪些信息
9.5.6初步的錄制工作
9.5.7初始設置
9.5.8代碼的編寫
9.5.9排序過程的編寫
9.5.10更多的測試
9.5.11修復問題
9.5.12實用程序的可用性
9.5.13對工程進行評估
第10章創建Function過程
10.1Sub過程與Function過程的對比
10.2為什麼創建自定義的函數
10.3介紹性的函數示例
10.3.1一個自定義函數
10.3.2在工作表中使用函數
10.3.3在VBA過程中使用函數
10.3.4分析自定義函數
10.4Function過程
10.4.1聲明函數
10.4.2函數的作用域
10.4.3執行Function過程
10.5Function過程的參數
10.6函數示例
10.6.1無參數的函數
10.6.2帶有一個參數的函數
10.6.3帶有兩個參數的函數
10.6.4使用數組作為參數的函數
10.6.5帶有可選參數的函數
10.6.6返回VBA數組的函數
10.6.7返回錯誤值的函數
10.6.8帶有不定數量的參數的函數
10.7模擬Excel的SUM函數
10.8函數的調試
10.9使用「插入函數」對話框
10.9.1指定函數類別
10.9.2添加函數說明
10.10使用載入宏存儲自定義的函數
10.11使用WindowsAPI
10.11.1WindowsAPI示例
10.11.2確定Windows目錄
10.11.3檢測Shift鍵
10.11.4了解更多有關API函數的信息
第11章VBA編程示例和技巧
11.1處理單元格區域
11.1.1復制單元格區域
11.1.2移動單元格區域
11.1.3復制大小可變的單元格區域
11.1.4選中或者識別各種類型的單元格區域
11.1.5提示輸入單元格中的值
11.1.6在下一個空單元格中輸入一個值
11.1.7暫停宏的運行以便獲得用戶選中的單元格區域
11.1.8計算選中的單元格的數目
11.1.9確定選中的單元格區域的類型
11.1.10有效地遍歷選中的單元格區域
11.1.11刪除所有空行
11.1.12任意次數地復制行
11.1.13確定單元格區域是否包含在另一個單元格區域內
11.1.14確定單元格的數據類型
11.1.15讀寫單元格區域
11.1.16在單元格區域中插入值的更好方法
11.1.17傳遞一維數組中的內容
11.1.18將單元格區域傳遞給Variant類型的數組
11.1.19按數值選擇單元格
11.1.20復制非連續的單元格區域
11.2處理工作簿和工作表
11.2.1保存所有工作簿
11.2.2保存和關閉所有工作簿
11.2.3隱藏除選區之外的區域
11.2.4同步工作表
11.3VBA技巧
11.3.1切換布爾類型的屬性值
11.3.2確定列印頁面的數量
11.3.3顯示日期和時間
11.3.4獲得字體列表
11.3.5對數組進行排序
11.3.6處理一系列文件
11.4使用在代碼中的一些有用的函數
11.4.1FileExists函數
11.4.2FileNameOnly函數
11.4.3PathExists函數
11.4.4RangeNameExists函數
11.4.5SheetExists函數
11.4.6WorkbookIsOpen函數
11.4.7檢索已經關閉的工作簿中的值
11.5一些有用的工作表函數
11.5.1返回單元格的格式信息
11.5.2會說話的工作表
11.5.3顯示在保存或列印文件時的時間
11.5.4理解對象的父親
11.5.5計算值介於兩個值之間的單元格數目
11.5.6計算單元格區域中可見單元格的數目
11.5.7確定行或列中最後一個非空的單元格
11.5.8字元串與模式匹配
11.5.9從字元串中提取第n個元素
11.5.10多功能的函數
11.5.11SheetOffset函數
11.5.12返回所有工作表中數據的最大值
11.5.13返回沒有重復的隨機整數元素的數組
11.5.14隨機化單元格區域
11.6WindowsAPI調用
11.6.1確定文件的關聯性
11.6.2確定磁碟驅動器信息
11.6.3確定默認列印機的信息
11.6.4確定視頻顯示器的信息
11.6.5為應用程序添加聲音
11.6.6讀寫注冊表
第Ⅳ部分用戶窗體
第12章多種自定義對話框的方法
12.1創建用戶窗體之前需要了解的內容
12.2使用輸入框
12.2.1VBA的InputBox函數的使用
12.2.2Excel的InputBox方法
12.3VBA的MsgBox函數
12.4Excel的GetOpenFilename方法
12.5Excel的GetSaveAsFilename方法
12.6提示輸入目錄名稱
12.6.1使用WindowsAPI函數選中目錄
12.6.2使用FileDialog對象選中目錄
12.7顯示Excel的內置對話框
12.7.1關於Dialogs集合
12.7.2執行功能區命令
12.8顯示數據記錄單
12.8.1使得數據記錄單變得可以訪問
12.8.2通過使用VBA來顯示數據記錄單
第13章用戶窗體概述
13.1Excel如何處理自定義對話框
13.2插入新的用戶窗體
13.3向用戶窗體添加控制項
13.4「工具箱」中的控制項
13.4.1復選框
13.4.2組合框
13.4.3命令按鈕
13.4.4框架
13.4.5圖像
13.4.6標簽
13.4.7列表框
13.4.8多頁
13.4.9選項按鈕
13.4.10RefEdit
13.4.11滾動條
13.4.12數值調節鈕
13.4.13TabStrip
13.4.14文本框
13.4.15切換按鈕
13.5調整用戶窗體的控制項
13.6調整控制項的屬性
13.6.1使用「屬性」窗口
13.6.2共同屬性
13.6.3更多屬性的信息
13.6.4適應鍵盤用戶的需求
13.7顯示和關閉用戶窗體
13.7.1顯示用戶窗體
13.7.2關閉用戶窗體
13.7.3關於事件處理程序
13.8創建用戶窗體的示例
13.8.1創建用戶窗體
13.8.2編寫代碼顯示對話框
13.8.3測試對話框
13.8.4添加事件處理程序
13.8.5驗證數據的有效性
13.8.6完成的對話框作品
13.9理解用戶窗體的事件
13.9.1了解事件
13.9.2用戶窗體的事件
13.9.3數值調節鈕的事件
13.9.4數值調節鈕與文本框配對
13.10引用用戶窗體的控制項
13.11自定義「工具箱」
13.11.1更改圖標或提供文本
13.11.2添加新頁
13.11.3自定義或組合控制項
13.11.4添加新的ActiveX控制項
13.12創建用戶窗體的模板
13.13用戶窗體檢驗表
第14章用戶窗體示例
第15章用戶窗體的高級技巧
第Ⅴ部分高級編程技巧
第16章用VBA開發Excel實用程序
第17章使用數據透視表
第18章使用圖表
第19章理解Excel的事件
第20章與其他應用程序的交互
第21章創建和使用載入宏
第Ⅵ部分開發應用程序
第22章使用功能區
第23章使用快捷菜單
第24章為應用程序提供幫助
第25章開發面向用戶的應用程序
第Ⅶ部分其他主題
第26章兼容性問題
第27章用VBA處理文件
第28章使用VisualBasic組件
第29章理解類模塊
第30章使用顏色
第31章有關Excel編程的常見問題
第Ⅷ部分附錄
……

Ⅸ 中文版Excel 2010高級VBA編程寶典的前言

本書的章節劃分為8個主要部分。
第I部分Excel基礎知識
該部分為全書其他部分搭建了舞台。第1章簡單介紹了電子表格軟體的發展歷史,從而幫助讀者弄清Excel是如何順應潮流而來的。第2章從概念上概述了Excel2010,對於轉換到這個Excel版本的有經驗的用戶來說,這些內容非常有用。第3章涵蓋了有關公式的基本內容,包括一些讀者可能還不知道的巧妙技巧。第4章講述了Excel可以使用的各種文件格式以及可以生成的各種文件格式。
第II部分Excel應用程序開發
這一部分由兩章組成。第5章廣泛討論了電子表格應用程序的概念。第6章講述了更多的細節信息,並闡述了電子表格應用程序開發過程中通常採用的步驟。
第III部分理解VBA
第7~11章構成了本書的第III部分,這些章節包含了學習VBA需要了解的所有內容。在這一部分中,介紹了VBA的基本情況,提供了編程的基礎知識,並詳細介紹了如何開發VBA子常式和函數。第11章包含了大量有用的VBA示例。
第IV部分操作用戶窗體
該部分的4章內容主要介紹了自定義對話框(也稱為用戶窗體)。第12章介紹了創建自定義用戶窗體的一些內置的方法。第13章介紹了用戶窗體以及可以使用的各種控制項。第14章和第15章則列舉了大量的自定義對話框的示例,從基本示例到高級示例。
第V部分高級編程技巧
該部分涵蓋了通常被認為是高級技巧的其他方法。前3章討論如何開發實用程序以及如何使用VBA處理數據透視表和圖表(包括新提供的迷你圖)。第19章講述了事件處理的內容,當某些事件發生時,利用事件處理程序可以自動執行過程。第20章討論了在與其他應用程序(如Word)交互時所採用的各種技術。第21章通過深入討論創建載入宏來結束該部分。
第VI部分開發應用程序
這部分的章節講述了創建面向用戶的應用程序的重要基礎內容。第22章討論了如何修改新的功能區界面。第23章詳細介紹了如何修改Excel的快捷菜單。第24章討論了向應用程序提供在線幫助的幾種不同方法。第25章描述了有關開發面向用戶的應用程序的基本信息,並詳細介紹了應用程序的示例。
第VII部分其他主題
這部分的6章內容講述其他一些主題。第26章敘述了有關兼容性方面的信息。第27章則討論了使用VBA處理文件的各種方法。在第28章中,解釋了如何使用VBA來操作諸如用戶窗體和模塊之類的VB組件。第29章涵蓋了類模塊的主題。第30章解釋了如何處理Excel中的顏色。這部分的最後一章很有用,它回答了有關Excel編程方面的很多常見問題。
第VIII部分附錄
本書包含了4個附錄。附錄A包含了有關Excel在線資源的一些有用信息。附錄B列出了VBA的所有關鍵字(語句和函數)。附錄C解釋了VBA的錯誤代碼。附錄D描述了在下載的示例文件包中可以找到的文件。

Ⅹ excel vba常用代碼

Visual Basic for Applications(簡稱VBA)是新一代標准宏語言,是基於Visual Basic for Windows 發展而來的。它與傳統的宏語言不同,傳統的宏語言不具有高級語言的特徵,沒有面向對象的程序設計概念和方法。而VBA 提供了面向對象的程序設計方法,提供了相當完整的程序設計語言。VBA 易於學習掌握,可以使用宏記錄器記錄用戶的各種操作並將其轉換為VBA 程序代碼。這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,使工作自動化。[1]

數據類型

基本數據類型

即Primary Type Data,下述列表的括弧內為位元組數:

  • Byte(1):無符號數類型,取值范圍0-255

  • Boolean(2)

  • Integer(2)

  • Long(4)

  • Single(4)

  • Double(8)

  • Currency(8)

  • Decimal(14)

  • Date(8)

  • String

  • Object(4)

  • Variant(根據分配確定)[2]

  • 自定義的數據類型

    相當於C語言的struct,例如:[2]

    Type 自定義類型名 元素名 As 類型 … [元素名 As 類型] End Type

    數組

  • Option Base 0 :數組索引值從0開始[2]

  • Option Base 1 :數組索引值從1開始

  • Dim MyArray(10) :聲明一個數組變數,10是最大的可用的數組索引值

  • MyArray(5) = 101 :給數組的元素賦值

  • Dim Data(10,5) :聲明一個二維數組變數

  • Data(1,1) = "A001" :給數組元素賦值

  • Dim cArr(-11 To 20, 1 To 3) As String :聲明一個數組,定義數組索引值的上下界

  • Dim dArr() As String :聲明動態數組

  • ReDim dArr(0 To 5, 1 To 2) :改變動態數組的尺寸默認把原數據清除。如果保留原來的數據,必須加上參數

  • Preserve:使用Preserve參數時只能改變最後一位的大小

  • If UBound(vTemp) = -1 Then:判斷數組變數vTemp是否為空數組

  • End If Erase MyArrar, Data Erase語句清除數組元素,釋放變數佔用的空間[2]

  • 常量

    編輯

    系統定義常量

    系統定義常量有3個:True、False和Null。[4]

    固有常量

    固有常量是編程時引用的對象庫定義的常量。所有固有常量都可以在宏或VBA代碼中使用。通常,固有常量通過前兩個字母來指明定義該常量。來自VB庫的常量則以「vb」開頭。來自Access的常量以「ac」開頭。可以使用對象瀏覽器來查看所有對象庫中的固有常量列表。[4]

    在VBA中,常量的數據類型有整型、長整型、單精度型、雙精度型、位元組型、貨幣型、字元型、日期型和邏輯型。一個整型數據就是一個整型常量,一個長整型數據就是一個長整型常量。例如,12%、-1%是整型常量,32768&、10000000&是長整型常量,-2.5 1、3.14是單精度實型常量,3.1415926#是雙精度實型常量,China、Shanghai是字元型常量,#07/13/2001 11:45PM#是日期常量,由符號 「 # 」 將字元括起來。[4]

    符號常量

    可以自行定義的常量即符號常量,必須先定義,後使用。可見,需要聲明的常量都是符號常量。[4]

    基本語法格式:

    1
  • [Publicr/Private]Const常量名[As類型]=表達式
  • 如:Global Const符號常量名稱 = 常量值[4]

    語句功能:

    定義一個符號常量,並將指定表達式的值賦給符號常量。[4]

    語句說明如下:[4]

    1)「常量名」指定符號常量的名字。符號常量名可以由字母、數字和下畫線組成,但只能以字母開頭,不能含有空格。[4]

    2)「表達式」指定符號常量的值。該表達式通常由數值型、字元型、邏輯型或日期型數據以及各種運算符組成,但在表達式中不能出現變數和函數。[4]

    3) public用來表示這個常量的作用范圍是整個資料庫的所有模塊。[4]

    4) private則表示這個常量只在使用該聲明常量語句的模塊中起作用。[4]

    說明:

    1)除用戶定義的符號常量外,VBA還提供了許多符號常量,我們可以直接使用。[4]

    2)對數碼比較長,並且在程序中多次使用的常量,通常使用符號常量代替。運行程序時,系統自動把程序中的所有符號常量換為賦給它的值。[4]

    變數

    編輯

    與常量一樣,變數也是一塊內存空間,用於保存程序運行過程中可能變化的數據。變數的名稱是用戶定義的一個標識符。[5]

    在代碼中需要使用該變數時,只需引用相應的標識符即可,而不用管變數當前的值具體是什麼。[5]

    聲明

    與用戶自定義的常量相似,變數在使用之前都需要聲明,在VBA中聲明變數的語法格式有以下幾種:[5]

  • 關鍵字變數名 AS數據類型

  • 關鍵字變數1,變數2 ... 變數n AS數據類型

  • 關鍵字變數1 AS數據類型,變數2 As數據類型, ... ,變數n AS數據類型

  • 在第二種語法格式中, 「變數n」的數據類型為AS關鍵字後定義的數據類型,而「變數1」、「變數2」、…的數據類型為變體型。[5]

    在VBA中,可用Dim、Private、Public和Static這4個關鍵字來聲明變數,使用不同關鍵字聲明的變數其含義也有所不同。[5]

    ◆ 利用Dim關鍵字聲明變數:Dim關鍵字主要用來在內存中分配一塊空間,並為該空間命名,是VBA中聲明變數最常用的關鍵字。使用Dim關鍵字聲明的變數只能在當前過程或模塊中使用。[5]

    ◆ 利用Private關鍵字聲明變數:Private關鍵字用於在類模塊中聲明一個私有變數,它只能在當前的類模塊中使用。當定義變數的位置同處於類模塊中時,其使用效果與使用Dim關鍵字定義的變數相同。[5]

    ◆ 利用Public關鍵字聲明變數:利用Public關鍵字聲明的變數可以在程序的任何地方調用,而與聲明變數的位置無關。[5]

    ◆ 利用Static關鍵字聲明變數:Static關鍵字用於聲明靜態變數,即變數的值在整個代碼運行期間都能被保留。[5]

    賦值

    變數在使用時還需要對其進行賦值。在VBA中對變數進行賦值可通過 「 = 」 符號或 「 Set 」 關鍵字進行。通過 「 = 」 符號對變數賦值的語法格式有以下幾種。[5]

  • 變數名=數據

  • 變數1=變數2 運算符 數據

  • 變數1=變數2 運算符 變數3 … 運算符 變數n

  • 如果在定義變數時指定了變數的數據類型,則為變數所賦的值也必須是該數據類型的值。如果變數定義為Integer類型,而在賦值時卻給了變數一個String類型的數據,則在編譯運行的過程中將彈出錯誤彈框。[5]

    運算符

    編輯

    運算符是在程序中執行計算功能的某些特殊符號,它是程序代碼的重要組成部分。在程序代碼中,運算符不能單獨使用,必須與其操作數共同組成表達式後才具有運算意義。VBA中的運算符包含算術運算符、連接運算符、比較運算符和邏輯運算符等。[4]

    算術運算符

    算術運算符主要用於執行四則運算,僅用算術運算符連接起來的表達式稱為算術表達式。算術運算符及其作用與示例如表所示。[5]

    例子

    名稱

    結果

    -$a

  • 取反

  • $a 的負值。

  • $a + $b

  • 加法

  • $a 和 $b 的和。

  • $a - $b

  • 減法

  • $a 和 $b 的差。

  • $a * $b

  • 乘法

  • $a 和 $b 的積。

  • $a / $b

  • 除法

  • $a 除以 $b 的商,允許小數。

  • $a $b 除法 $a 除以 $b 的商,結果取整。

    $a Mod $b

  • 取余

  • $a 除以 $b 的余數

  • 注意:

    在執行算術運算時,運算符兩側操作的數據類型必須相同,否則會出現「類型不匹配」的錯誤提示。當「+」運算符左右兩側都是字元串類型的操作數時,執行的是連接運算,如表達式「"Pass+"word"的計算結果為字元串「 PassWord 」。[5]

    連接運算符

    連接運算符的作用是將運算符兩側的操作數連接成一個數,其操作數的數據類型通常都為String類型。VBA中的連接運算符有「&」和「+」兩種,由於使用「+」執行連接運算時,容易與加法運算混淆,所以通常都採用「&」進行連接運算。[5]

    比較運算符

    比較運算符可以對運算符兩側的操作數執行比較運算,其返回結果為Boolean類型的True或False。比較運算符的操作數通常為具體的數值,當操作數為字元串或其他符號時,是根據該符號的ASCII碼進行比較的。VBA中的比較運算符及其作用與示例如表所示。[5]

    例子

    名稱

    結果

    $a = $b

  • 等於

  • TRUE,如果 $a 等於 $b。

  • $a <> $b

  • 不等

  • TRUE,如果 $a 不等於 $b。

  • $a < $b

  • 小於

  • TRUE,如果 $a 嚴格小於 $b。

  • $a > $b

  • 大於

  • TRUE,如果 $a 嚴格大於 $b。

  • $a <= $b

  • 小於等於

  • TRUE,如果 $a 小於或者等於 $b。

  • $a >= $b

  • 大於等於

  • TRUE,如果 $a 大於或者等於 $b。

  • 邏輯運算符

    邏輯運算符用於對運算符兩側的操作數執行邏輯運算,參與邏輯運算的操作數本身可以是邏輯表達式(表達式的最終結果為True或 False),也可以是算術表達式(表達式的最終返回值為0或非0)。[5]

    在邏輯運算中,數值0與邏輯值 False相同,表示邏輯假;非0數值與True相同,表示邏輯真。邏輯運算符及其含義與示例如表所示。[5]

    例子

    名稱

    結果

    $a and $b

  • And(邏輯與)

  • TRUE,如果 $a 與 $b 都為TRUE。

  • $a or $b

  • Or(邏輯或)

  • TRUE,如果 $a 或 $b 任一為TRUE。

  • $a xor $b

  • Xor(邏輯異或)

  • TRUE,如果 $a 或 $b 同位相異。

  • Not(1>2)

  • Not(邏輯非)

  • TRUE。

  • (1>2) Eqv (1>2)

  • 兩個操作數同為假,返回False;兩個操作數同為真,返回True;兩個操作數一真一假,返回False

  • TRUE。

  • 2<>1 Imp 3<5

  • 運算符左右同為真,返回True;左右同為假,返回True;左真右假,回返 False;左假右真,返回True

  • TRUE。

  • 語法結構

    編輯

    if 語句

    1
  • if條件1then語句1elseif條件2then語句2elseif......else語句nendif
  • Select Case 語句

    1
  • SelectCase表達式Case表達式列表1語句1Case表達式列表2語句2...Case表達式列表n語句nEndSelect
  • 其中的表達式列表可以為:[5]

  • 表達式例: "A"

  • 用逗號分隔的一組枚舉表達式例:2,4,6,8

  • 表達式1 To表達式2 例:60 To 100

  • Is關系運算符表達式 例:Is < 60

  • Do...Loop 語句

    1
  • DoWhile或Until條件語句塊1ExitDo語句塊2Loop
  • For...Next語句

    1
  • Do語句塊1ExitDo語句塊2LoopWhile或Until條件
  • For Each … Next語句

    1
  • For循環控制變數=初值To終值Step步長語句塊『ExitFor語句可以跳出循環體Next
  • 跳出本次循環的continue語句

    1
  • For循環控制變數=初值To終值Step步長Do'用於模擬continue語句塊If條件ThenExitDo'用於模擬continue語句塊LoopWhileFalse'用於模擬continueNext
  • With語句

    1
  • With對象引用語句塊EndWith
  • On Error語句

    1
  • OnErrorGoto出錯處理語句的label'跳轉到出錯處理語句
  • 1
  • OnErrorResumeNext'遇到錯誤,不管錯誤,繼續往下執行
  • 具有控製作用的函數

  • If(條件式,表達式1,表達式2)[5]

  • Switch(條件式1,表達式1,[條件式2,表達式2[,...,條件式n,表達式n]])

  • Choose(索引式,選項1[,選項2,...[,選項n]]) '這是基於1的索引

  • 其他語句

    編輯

    注釋語句

    使用REM或者單引號開始的行。[6]

    語句的連寫與續行

    如果一行包括多條語句,用冒號分割各個語句。跨多行的語句,在行末用「空格加下劃線」表示續行[6]。

    過程與函數

    編輯

    12
  • Sub過程名(參數表)語句塊ExitSub語句塊EndSub
  • 1
  • Function函數名(參數表)AsType語句塊函數名=表達式ExitFunctionEndFunction
  • 可以是Private、Public、Friend、Static等修飾。[6]

    調用函數/過程時,可以加括弧或者不加括弧。如果調用表達式作為一行的一部分,那麼必須用參數,例如函數調用的返回值賦給變數。 調用過程時, 可以使用/不使用call關鍵字。使用call語句調用過程,如果無參數,則不加括弧;如果有參數,必須加括弧。如果調用時用括弧包住單個參數,則該參數強行按值傳遞。需要特別注意,不用call不加括弧的調用,形參與實參是傳值(passed by value)而不是傳引用(passed by reference),這會導致一些對象的方法調用失敗。例如:[6]

    1
  • DimcnAsADODB.ConnectionSetcn=CurrentProject.ConnectionDimrsAsNewADODB.Recordsetrs.Open"SELECT*FROMmyTable",cnDimExcelAppAsNewExcel.=ExcelApp.Workbooks.Add.Worksheets(1)ExcelWst.Range("A2").CopyFromRecordset(rs)'失敗,無法執行該行ExcelWst.Range("A2").CopyFromRecordsetrs'可成功執行該行
  • 常用內置函數

    編輯

    VBA的常用內置函數:[5]

  • MsgBox

  • InputBox

  • 舍入函數:Fix 向0取整,Int向下取整, Round四捨五入

  • Rnd: 返回0-1內的單精度隨機數

  • 字元串函數:[5]

  • Filter:對字元串的一維數組的過濾

  • InStr([Start, ]<Str1>,<Str2>[, Compare])與InStrRev: 查找子串

  • Len:字元串長度

  • Join:連接一維數組中的所有子字元串

  • Left,Right,Mid: 截取子字元串

  • Space(數值) :生成空格字元串

  • Ucase,Lcase:大小寫轉換函數

  • Ltrim, Rtrim,Trim :刪除首尾空格

  • Replace

  • Split:分割一個字元串成為一維數組

  • StrComp:字元串比較

  • StrConv:字元串轉換

  • String(number, character):制定字元重復若干次

  • StrReverse

  • 日期/時間有關函數:[5]

  • Year, Month, Day, WeekDay,Hour,Minute,Second: 截取日期時間分量

  • DateAdd: 日期/時間增量函數

  • DateDiff(<間隔類型>,<日期1>,<日期2>[,W1][,W2])日期/時間的距離函數

  • DatePart(<分割類型>,<日期>[,w1][,w2])時間分割函數

  • DateSerial(<表達式1>,<表達式2>,<表達式3>) 合成日期;DateValue(「字元串表達式」)返回日期;

  • Date,Time,Now,Timer: 返回日期時間

  • DateValue

  • TimeSerial:由時間序列得到時間對象

  • TimeValue:由時間字元串得到時間對象

  • Weekday:獲得日期的周幾

  • WeekdayName

  • 轉換函數:CBool、CByte、CCur、CDate、 CDbl、CDec、CInt、CLng、CLngLng、CLngPtr、[5]CSng、CStr、CVar、CVErr、Asc(<字元串表達式>)返回第一個字元的Ascii編碼值、Chr(ASCII碼)返回字元、Hex、Oct、Str(<數值表達式>)返回字元串、Val(string)、Format、FormatCurrency、FormatDateTime、FormatNumber、FormatPercent、MonthName。

  • Nz(表達式或欄位屬性值[,規定值])如果是空,則返回0或者""或者函數的第二個參數值[5]

  • 驗證函數:isNumeric、isDate、isNull、isEmpty、IsArray、IsError、IsMissing、IsObject[5]

  • 數學函數:Abs、Sqr、Tan、Atn(即atan)、Sin、Cos、Exp(e為基的指數)、Log自然對數[5]

  • Array:構造一個Array對象[5]

  • CallByName: get or set a property, or invoke a method at run time using a string name.[5]

  • 控制流:Choose:類似於C語言的select語句、If相當於IF-ELSE語句、Switch[5]

  • Command:獲取命令行參數[5]

  • CreateObject:創建ActiveX對象

  • CurDir:返回指定驅動器的當前工作路徑[5]

  • 由基本數學函數導出的函數:Sec、Cosec、Cotangent、Cotan、Arcsin、Arccos、Arcsec、Arccosec、Arccotan、HSin、HCos、HTan、HSec、HCosec、HCotan、HArcsin、HArccos、HArctan、HArcsec、HArccosec、HArccotan、LogN

  • DoEvents:暫時把CPU控制權交回給系統[5]

  • Environ:返回環境變數的值[5]

  • 文件操作:[5]

  • Dir:返回滿足條件的所有文件、目錄的名字

  • EOF

  • FileAttr

  • FileDateTime

  • FileLen

  • FreeFile Function

  • GetAttr:返迴文件、目錄的屬性值

  • Input:讀取文件

  • Loc:文件指針位置

  • LOF:文件打開時的指針位置

  • Seek:文件指針定位

  • Spc:使用Print做position output

  • Tab:用於Print函數

  • Error:錯誤號對應的錯誤消息[5]

  • Windows Registry中的數據:GetAllSettings、SaveSetting、DeleteSetting、GetSetting[5]

  • GetObject:ActiveX組建的引用[5]

  • IMEStatus:返回當前Input Method Editor (IME)[5]

  • Macintosh平台:MacID、MacScript[5]

  • 金融函數:[5]

  • DDB:使用double-declining balance計算貶值

  • FV:計算固定利率的年金

  • IPmt:計算利率

  • IRR:計算利率

  • MIRR:計算利率

  • NPer:計算周期數

  • NPV:計算net present value

  • Pmt:計算支付數

  • PPmt:計算本金支付數

  • PV:計算present value

  • Rate:利息率

  • SLN:straight-line depreciation

  • SYD:計算sum-of-years' digits depreciation

  • Partition:返回字元串,表示一個數值名字落在各個range內。常用於SQL select語句[5]

  • QBColor:顏色值[5]

  • RGB:顏色值[5]

  • TypeName:得到變數的類型名[5]

  • VarType:得到變數的類型數[5]

熱點內容
電腦原始伺服器名 發布:2024-04-23 22:01:52 瀏覽:55
21款發現5哪個配置透明引擎蓋 發布:2024-04-23 21:20:18 瀏覽:873
adb拷文件夾 發布:2024-04-23 21:12:25 瀏覽:10
如何破解wmv加密視頻 發布:2024-04-23 21:11:44 瀏覽:558
安卓拍抖音怎麼把聲音錄進去 發布:2024-04-23 20:58:51 瀏覽:847
安卓fifa15怎麼恢復數據 發布:2024-04-23 20:58:42 瀏覽:243
卸載oracle資料庫 發布:2024-04-23 20:36:26 瀏覽:522
發帖站源碼 發布:2024-04-23 20:22:45 瀏覽:683
小豚攝像頭存儲卡滿了怎麼辦 發布:2024-04-23 20:04:41 瀏覽:233
我的世界伺服器管理應該做什麼 發布:2024-04-23 19:37:19 瀏覽:147