久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

VBA的Excel基本原理和應用

 jztgwq 2011-06-19

VBA的Excel基本原理和應用

 

 

摘要:直到90年代早期,使應用程序自動化還是充滿挑戰(zhàn)性的領域,。對每個需要自動化的應用程序,,人們不得不學習一種不同的自動化語言。例如:可以用EXCEL的宏語言來使EXCEL自動化,,使用WORD BASIC使WORD自動化,,等等。微軟決定讓它開發(fā)出來的應用程序共享一種通用的自動化語言——Visual Basic For Application(VBA)來一統大局,。

 

關鍵詞:VBA,、ExcelVBA/Excel

 

 

一些基本概念

 

一,、什么是VBA

 

Excel是什么這里就不多說了,。Visual Basic for Applications(簡稱VBA)是新一代標準宏語言,是基于Visual Basic for Windows 發(fā)展而來的,。它與傳統的宏語言不同,,傳統的宏語言不具有高級語言的特征,沒有面向對象的程序設計概念和方法,。而VBA 提供了面向對象的程序設計方法,,提供了相當完整的程序設計語言,。VBA 易于學習掌握,可以使用宏記錄器記錄用戶的各種操作并將其轉換為VBA 程序代碼,。這樣用戶可以容易地將日常工作轉換為VBA 程序代碼,,使工作自動化。因此,,對于在工作中需要經常使用Office 套裝軟件的用戶,,學用VBA 有助于使工作自動化,提高工作效率,。另外,由于VBA 可以直接應用Office 套裝軟件的各項強大功能,,所以對于程序設計人員的程序設計和開發(fā)更加方便快捷,。

可以認為VBA是非常流行的應用程序開發(fā)語言VISUAL BASIC 的子集。實際上VBA是寄生于VB應用程序的版本,。VBAVB的區(qū)別包括如下幾個方面:

1. VB是設計用于創(chuàng)建標準的應用程序,,而VBA是使已有的應用程序(EXCEL)自動化;

  2. VB具有自己的開發(fā)環(huán)境,,而VBA必須寄生于已有的應用程序,;

  3. 要運行VB開發(fā)的應用程序,用戶不必安裝VB,,因為VB開發(fā)出的應用程序是可執(zhí)行文件(*.EXE),,而VBA開發(fā)的程序必須依賴于它的父應用程序,例如EXCEL,。

盡管存在這些不同,,VBAVB在結構上仍然十分相似。事實上,,如果已經了解了VB,,會發(fā)現學習VBA非常快,。相應的,,學完VBA會給學習VB打下堅實的基礎。而且,,當學會在EXCEL中用VBA創(chuàng)建解決方案后,,即已具備在WORDACCESS,、OUTLOOK,、FOXPROPROWERPOINT中用VBA創(chuàng)建解決方案的大部分知識,。

 

 

二,、什么是Excel應用程序

 

Excel知道是什么了,,那么Excel應用程序是什么呢?其實說起來很簡單:利用ExcelVBA為平臺,,開發(fā)出來的電子數據表即稱之為Excel應用程序,。

 

 

三、什么是宏

 

宏是一系列的命令與函數,,存儲于 Visual Basic 的模塊中,,并在需要執(zhí)行該項任務時可隨時運行。如果經常在重復某項任務,,那么可以用宏自動執(zhí)行該任務,。Office中,宏可以手動錄制,,也可以自己輸入代碼制作,。

 

 

 

以上是VBA的三個概念,那么為什么要用VBA,?為什么要以Excel為平臺來開發(fā)程序,?這里說幾個簡單的理由:

1. 當使用Excel為平臺時,你的程序就可以利用Excel現有的功能,,相當于站在一個小巨人的肩膀上,,這就可以大大減少開發(fā)的周期;

2. 幾乎所有的電腦中都有Excel,,也有大量的人正在是用Excel,,但并不是每個人都會使用VBA,當你了解VBA后,,以前的很多問題就可以迎刃而解了,;

3. Excel開發(fā)程序很容易,只要電腦中有Excel,,基本不需要其他的文件,,簡簡單單的復制與粘貼,就完成了程序的開發(fā),;

4. VBA的語言是相對容易學的語言,,很容易上手,如果你熟悉VB,,那你發(fā)現它們在語言方面是相通的,,而如果你對Excel比較了解,那你也就很容易理解Excel的各種對象了,。

 

 

 

 

VBAExcel基本應用

 

Application對象是Excel對象模型的頂層,,表示整個Excel應用程序。在VB應用程序中調用Excel,就是使用Application對象的屬性,、方法和事件,。為此,首先要聲明對象變量:

 

Dim VBExcel As Object

 

或直接聲明為Excel對象:

 

Dim VBExcel As Excel.Application

 

在聲明對象變量之后,,可用CreateObject函數或GetObject函數給變量賦值新的或已存在的Application對象引用,。

1.       CreateObject函數生成新的對象引用:

 

Set VBExcel=CreateObject ("Excel.Application")

 

字符串"Excel.Application"是提供Excel應用程序的編程ID,這個變量引用Excel應用程序本身,。

2. GetObject函數打開已存在的對象引用:

 

Set AppExcel=GetObject("SAMP.XLS")

 

上面語句打開文件SAMP.XLS,。

 

 

一、             Application對象常用的屬性,、方法

 

方法 / 屬性

描述

Visible屬性

TrueFalse,,表明Excel應用程序是否可見

Left,Top屬性

Excel窗口的位置

Height,Width屬性

Excel窗口的大小

WindowState屬性

指定窗口的狀態(tài),?。?/span>XIMaximized(最大化)X1 Minimized(最小化)x1 Normal(缺省)

Quit方法

退出Microsoft Excel

Calculate方法

重新計算所有打開的工作簿,、工作表或單元格

Evaluate方法

求值數學表達式并返回結果

 

示例1

求值數學表達式:

 

Dim VBExcel As Object

Set VBExcel=CreateObject ("Excel.Application")

X=VBExcel. Evaluate ("3+5*(cos (1/log (99. 9)))")

 

 

二、使用Excel應用程序

 

如前所述,,在VB應用程序中調用Excel應用程序,就是使用Application對象的屬性,、方法和事件,。下面分類給出其中常用的屬性和方法。

 

1. 使用工作薄

 

Workbook對象代表Excel應用程序中當前打開的一個工作簿,,包含在Workbooks集合中,。可以通過Workbooks集合或表示當前活動工作簿的Active Workbook對象訪問Workbook對象,。

 

方法

描述

Add方法

創(chuàng)建新的空白工作簿,,并將其添加到集合中

Open方法

打開工作簿

Activate方法

激活工作簿,使指定工作簿變?yōu)榛顒庸ぷ鞑?,以便作?/span>Active Workbook對象使用

Save方法

按當前路徑和名稱保存現有工作簿(如是首次保存,,則將其保存到缺省名稱中,如BOOK1.XLS)

SaveAs方法

首次保存工作簿或用另一名稱保存工作簿

Close方法

關閉工作簿

PrintOut方法

打印工作簿,,語法為:PrintOut (from, To, Copies, Preview, Printer, ToFile, Collate)

可選參數

描述

From

打印的起始頁號,。如省略將從起始位置開始打印

To

打印的終止頁號。如省略將打印至最后一頁

Copies

要打印的份數,。如省略將只打印一份

Preview

如果為TrueExcel打印指定對象之前進行打印預覽,。如果為False,或省略則立即打印該對象

Printer

設置活動打印機的名稱

ToFile

如果為True則打印輸出到文件

Collate

如果為True則逐份打印每份副本

 

下面語句可將活動工作簿的25頁打印3份:

 

ActiveWorkbook.PrintOut From:=2 To 5 Copies:=3

 

示例2

生成,、保存,、關閉工作簿:

 

Dim VBExcel As Excel.Application

Set VBExcel= CreateObject("Excel.Application")

With VBExcel

.Workbooks.Add

With ActiveWorkbook

.Save As"C:\Temp\OUTPUT.XLS"

.Close

End With

.Quit

End With

 

本例實際操作過程詳解

1. 新建一個Excel表格,筆者保存在桌面,文件名為“Book1.xls”,,打開后選擇“視圖→工具欄→Visual Basic”調出Visual Basic工具欄:

 

2. 點擊紅圈圈住的按鈕進入Visual Basic編輯器:

 

3. 右鍵單擊VBAProject,,按圖示插入一個模塊:

 

4. 構建auto_open()函數,讓代碼在Book1.xls啟動時就自動運行,在代碼框中輸入“Sub auto_open()”,,回車后自動生成“End Sub”,,將以上代碼復制粘貼到兩者中間,如圖:

 

5. 保存退出VBA編輯器及Excel,,建立C:\Temp目錄:

 

6. 打開Book1.xls,,會跳出一個提示框,點擊“啟用宏”,,代碼中的“auto_open()”事件在Book1.xls打開時自動運行:

 

 

 

7. 現在可以去看C:\Temp目錄的情況了:

 

以下代碼不再進行詳細解說,,感興趣的話可以自行嘗試。

 

2. 使用工作表

Sheets集合表示工作簿中所有的工作表,??梢酝ㄟ^Sheets集合來訪問、激活,、增加,、更名和刪除工作表。一個Worksheet對象代表一個工作表,。

常用的屬性,、方法有:

 

 屬性

描述

Worksheets屬性

返回Sheets集合

Name屬性

工作表更名

Add方法

創(chuàng)建新工作表并將其添加到工作簿中

Select方法

選擇工作表

Copy方法

復制工作表

Move方法

將指定工作表移到工作簿的另一位置

Delete方法

刪除指定工作表

PrintOut方法

打印工作表

 

示例3:將C盤工作簿中的工作表復制到F盤工作簿中:

 

Dim VBExcel As Excel.Application

Set VBExcel=CreateObject("Excel.Application")

With VBExcel

.Workbooks.Open "C:\Temp\OUTPUT.XLS"

.Workbooks.Open "F:\OUTPUT1.XLS"

.Workbooks("OUTPUT.XLS").Sheets ("Sales").Copy

.Workbooks("OUTPUT1.XLS)

.Workbooks("OUTPUT1.XLS").Save

.Workbooks("OUTPUT.XLS").Close

.Workbooks("OUTPUTI.XLS").Close

.Quit

End With

 

3. 使用單元范圍

 

Range對象代表工作表的某一單元格、某一行,、某一列,、某一選定區(qū)域或者某一三維區(qū)域。

常用的屬性,、方法有:

 

方法 / 屬性

描述

Range屬性

Range (arg)其中argA1--樣式符號,,表示單個單元格或單元格區(qū)域

Cells屬性

Cells (row , col )(其中row為行號,col為列號)表示單個單元格

ColumnWidth屬性

指定區(qū)域中所有列的列寬

Rowl3eight屬性

指定區(qū)域中所有行的行寬

Value屬性

指定區(qū)域中所有單元格的值(缺省屬性)

Formula屬性

指定單元格的公式,,由A1--樣式引用

Select方法

選擇范圍

Copy方法

將范圍的內容復制到剪貼板

C1earContents方法

清除范圍的內容

Delete方法

刪除指定單元范圍

 

4. 使用圖表

 

Chart對象代表工作簿中的圖表,。該圖表既可為嵌人式圖表(包含于ChartObject對象中)也可為分立的圖表工作表。

常用方法有:

 

方法 / 屬性

描述

Add方法

新建圖表工作表,。返回Chart對象,。

PrineOut方法

打印圖表。

ChartWizard方法

修改給定圖表的屬性,,其語法為:ChartWizard(Source, Gallery, Format, P1otBy, CategoryLabels ,SeriesLabels, HasLegend, Title, CategoryTitle, ValueTitle, ExtraTitle)

可選參數

描述

Source

包含新圖表的源數據的區(qū)域,。如省略,將修改活動圖表工作表或活動工作表中處于選定狀態(tài)的嵌人式圖表

Gallery

圖表類型,。其值可為下列常量之一:xlArea

Format

內置自動套用格式的編號,。如省略,,將選擇默認值。

P1otBy

指定系列中的數據是來自行(xlRows)還是列(xlColumns)

CategoryLabels

表示包含分類標志的源區(qū)域內行數或列數的整數

SeriesLabels

表示包含系列標志的源區(qū)域內行數或列數的整數

HasLegend

若指定True,,則圖表將具有圖例

Title

圖表標題文字

CategoryTitle

分類軸標題文字

ValueTitle

數值軸標題文字

ExtraTitle

三維圖表的系列軸標題,,或二維圖表的第二數值軸標題

 

可組合使用Add方法和ChartWizard方法,以創(chuàng)建包含工作表中數據的圖表工作表,。下例基于工作表"Sheetl"中單元格區(qū)域"A1:A20"中的數據生成新的折線圖并打印,。

 

With Charts.Add

.ChartWizard source:=Worksheets ("sheet1").Range ("a1:a20"),gallery:=xlLine,title:="折線圖表"

.Printout

End With

 

5. 使用Excel工作表函數

VB語句中可使用大部分的Excel工作表函數,可通過WorksheetFunction對象調用Excel工作表函數,。下面的Sub過程用Min工作表函數求出指定區(qū)域中單元格的最小值,,并通過消息框顯示結果值。

 

Sub UseFunction()

Dim myRange As Range

Set myRange=Worksheets ("Sheet1").Range("B2:F10")

answer=Application.WorksheetFunction.Min(myRange)

MsgBox answer

End Sub

 

如果使用以區(qū)域引用為參數的工作表函數,,必須指定一個Range對象,。如可用Match工作表函數對A1A10區(qū)域的所有單元格進行搜索。

 

Sub FindFirst()

my Var=Application.WorksheetFunction.Match (9,Worksheets( 1).Range("A1:A10"),0)

MsgBox myVar

End Sub

 

要在單元格中插人工作表函數,,可將該函數指定為對應于Range對象的Formula屬性值,。在以下示例中,將當前工作簿SheetlA1B3區(qū)域的Formula屬性指定為RAND工作表函數(此函數產生二個隨機數),。

 

Sub InsertFormula()

Worksheets ("Sheet1").Range("A1:B3").Formula="RAND()"

End Sub

 

 

 

 

 

最后,,任何東西都不是萬能的,ExcelVBA也是一樣如,,Excel是一個電子表格程序,,如果你把它強加成數據庫軟件是不公平的,在處理較少的數據,,比如幾千行的,用Excel是比較理想的,,而大量的數據時,,你就應該考慮用數據庫了,比如Microsoft Office中的Access等,,或者將兩個相結合,。充分了解Excel的基本知識與VBA的編程技巧,你就會從中獲得樂趣,,讓我們一起來吧,,走進VBA的世界中。

 

 

 

 

注解

     代碼部分用灰色底紋標識

 


參考文獻

 

http://baike.baidu.com/view/88461.htm

http://hi.baidu.com/ztoxet/blog/item/f18149dfe2d29615495403f7.html

http://tech./2006-10/11609006399673.html

 

 

【P.S:本文是我08年上學期《網絡化辦公應用教程》的期末考試論文,,大部分文字來源于網絡(絕無侵權之意),,自己排版、畫表格,,其中實例操作部分圖片,、文字原創(chuàng)為(因為第一次交上去老師要讓加圖片后重新提交,,網上又找不到圖片,就只好自己弄了- -|||),。應該不會有太多人去研究吧,,只希望對一些想要研究的朋友能有幫助咯~~】

    本站是提供個人知識管理的網絡存儲空間,所有內容均由用戶發(fā)布,,不代表本站觀點,。請注意甄別內容中的聯系方式、誘導購買等信息,,謹防詐騙,。如發(fā)現有害或侵權內容,請點擊一鍵舉報,。
    轉藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多