Excel圖表操作_第1頁
Excel圖表操作_第2頁
Excel圖表操作_第3頁
Excel圖表操作_第4頁
Excel圖表操作_第5頁
已閱讀5頁,還剩41頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

1、第 7 章 圖表對(duì)象操作第 7 章圖表對(duì)象操作在前面的章節(jié)中,已經(jīng)詳細(xì)講解了如何使用 Excel VBA 處理 Excel 的數(shù)據(jù)。除此之外, Excel 還可以創(chuàng)建各種不同類型的圖表。數(shù)據(jù)是圖表的基礎(chǔ),而圖表則可以更加直觀的顯 示數(shù)據(jù)。在 Excel VBA 中,同樣給圖表提供多種屬性和事件。在本章中,將詳細(xì)講解如何 使用 VBA 代碼編輯圖表。7.1創(chuàng)建圖表在 Excel 中,用戶可以通過向創(chuàng)建所需要的圖表類型。同時(shí),用戶在開發(fā)過程中,通 過 VBA 代碼創(chuàng)建各種類型的圖表。在本小節(jié)中,將詳細(xì)講解如何使用 VBA 創(chuàng)建圖表。案例 136創(chuàng)建圖表工作表1功能說明在 Excel VBA 中,用

2、戶可以通過 VBA 代碼來創(chuàng)建圖表工作表。同時(shí)可以通過 VBA 代 碼來定制圖表的屬性。2語法說明在 Excel VBA 中,Charts 集合包含工作簿中所有圖表工作表的集合。通過 Charts 集合 的 Add 方法可向集合中添加新的圖表工作表(新建圖表工作表),Add 方法的語法格式如 下:表達(dá)式.Add(Before, After, Count, Type) 該方法的參數(shù)都可省略,各參數(shù)的含義如下:Before:指定工作表的對(duì)象,新建的工作表將置于此工作表之前。After:指定工作表的對(duì)象,新建的工作表將置于此工作表之后。Count:要添加的工作表數(shù)。默認(rèn)值為 1。Type:指定要添加

3、的圖表類型,可創(chuàng)建的圖表類型很多,具體可參考 Excel VBA 的幫 助信息。提示:如果 Before 和 After 兩者都被省略,新建的圖表工作表將插入到活動(dòng)工作表之前。在 Excel VBA 中,通過 Chart 對(duì)象的 SetSourceData 方法,可為指定圖表設(shè)置源數(shù)據(jù)區(qū) 域。其語法格式如下:表達(dá)式.SetSourceData(Source, PlotBy) 該方法的兩個(gè)參數(shù)含義如下:296Source:為一個(gè) Range 對(duì)象,用來指定圖表的源數(shù)據(jù)區(qū)域。PlotBy:指定數(shù)據(jù)繪制方式??墒褂贸A?xlColumns(數(shù)據(jù)系列在行中)和 xlRows(數(shù) 據(jù)系列在列中)之一。通

4、過 Chart 對(duì)象的 ChartTitle 屬性,可返回 ChartTitle 對(duì)象,該對(duì)象表示指定圖表的標(biāo) 題。通過該對(duì)象的屬性可控制圖表的標(biāo)題,如設(shè)置標(biāo)題文本、設(shè)置標(biāo)題的格式等。同時(shí), 要設(shè)置圖表的內(nèi)容,用戶需要熟悉關(guān)于圖表的屬性。其常見的屬性如表 7.1 所示。表 7.1 Chart對(duì)象的常用屬性名稱意義BackWall是一個(gè)只讀屬性,返回Walls對(duì)象,該對(duì)象允許用戶單獨(dú)對(duì)三維圖表的背景墻進(jìn)行格式設(shè)置。ChartArea是一個(gè)只讀屬性,返回一個(gè)ChartArea對(duì)象,該對(duì)象表示圖表的整個(gè)圖表區(qū)。ChartStyle是一個(gè)可讀寫的Variant型屬性,用于返回或設(shè)置圖表的圖表樣式??梢?/p>

5、使用介于1到48之間的數(shù)字設(shè)置圖表樣式。ChartTitle是一個(gè)只讀屬性,用于返一個(gè)ChartTitle對(duì)象,表示指定圖表的標(biāo)題。ChartType是一個(gè)可讀寫的XlChartType類型,用于返回或設(shè)置圖表類型。DataTable是一個(gè)只讀屬性,用于返回一個(gè)DataTable對(duì)象,表示此圖表的數(shù)據(jù)表。HasAxis是一個(gè)可讀寫的Variant類型屬性,用于返回或設(shè)置圖表上顯示的坐標(biāo)軸。HasDataTable是一個(gè)可讀寫的Boolean型屬性,如果圖表有數(shù)據(jù)表,則該屬性值為True。PlotArea是一個(gè)只讀屬性,用于返回一個(gè)PlotArea對(duì)象,表示圖表的繪圖區(qū)。PlotBy是一個(gè)Lon

6、g型可讀寫,返回或設(shè)置行或列在圖表中作為數(shù)據(jù)系列使用的方式。可為以下XlRowCol常量之一:xlColumns 或xlRows。Visible返回或設(shè)置一個(gè)XlSheetVisibility值,用于確定對(duì)象是否可見。Walls是一個(gè)只讀屬性,返回一個(gè)Walls對(duì)象,此表示三維圖表的背景墻。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶需要用 VBA 代碼創(chuàng)建圖表工作表,其中原始數(shù)據(jù)如圖 7.1 所示。圖 7.1 原始數(shù)據(jù)4編寫代碼銷量分析圖表的 VBA 代碼如下:Sub CreatCharts() Dim cht As ChartSet

7、cht = Charts.Add With cht.SetSourceData Source:=Sheets("Sheet1").Range("A1:E6"), PlotBy:=xlRows.ChartType = xlColumnClustered.HasTitle = True.ChartTitle.Text = "銷量數(shù)據(jù)圖" End WithEnd Sub5運(yùn)行結(jié)果運(yùn)行程序代碼,查看運(yùn)行的結(jié)果,如圖 7.2 所示。圖 7.2 創(chuàng)建圖表工作表2986程序分析如果用戶對(duì)圖表的屬性不熟悉的時(shí)候,可以使用宏功能來創(chuàng)建圖表。查看宏代碼中

8、的 圖表屬性和代碼。案例 137創(chuàng)建嵌入式圖表1功能說明在 Excel VBA 中,圖表工作表和嵌入式圖表是不同的對(duì)象。但是,用戶同樣可以通過VBA 代碼來創(chuàng)建嵌入式圖表。2語法說明在 Excel VBA 中,嵌入到工作表中的圖表對(duì)象為 ChartObject 對(duì)象。ChartObjects 集合 包含指定工作表上所有的 ChartObject 對(duì)象的集合。每個(gè) ChartObject 對(duì)象都代表一個(gè)嵌入 圖表。ChartObject 對(duì)象充當(dāng) Chart 對(duì)象的容器。ChartObject 對(duì)象的屬性和方法控制工作表 上嵌入圖表的外觀和大小。通過 ChartObjects 集合的 Add 方

9、法,可向集合中添加嵌入式圖表。其語法格式如下: 表達(dá)式.Add(Left, Top, Width, Height) 該方法的 4 個(gè)參數(shù)指定嵌入式圖表尺寸,分別設(shè)置左上角的坐標(biāo)位置和圖表的初始大小。使用 ChartObjects 集合的 Delete 方法可刪除指定工作表的嵌入式圖表。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶需要用 VBA 代碼創(chuàng)建嵌入式圖表,其中原始數(shù)據(jù)如圖 7.3 所示。圖 7.3 原始數(shù)據(jù)4編寫代碼創(chuàng)建嵌入式圖表的 VBA 代碼如下: Sub CreatInsertCharts() Dim cht As Char

10、tObject On Error Resume NextActiveSheet.ChartObjects.DeleteOn Error GoTo 0With Range("A10:F20")Set cht = ActiveSheet.ChartObjects.Add( _.Left, .Top, .Width, .Height) End WithWith cht.Name = "SaleChart"With .Chart.SetSourceData Source:=Sheets("Sheet1").Range("A1:E6&

11、quot;), PlotBy:=xlRows.ChartType = xlColumnClustered.SetElement msoElementChartTitleCenteredOverlay.ChartTitle.Text = "銷量數(shù)據(jù)圖" End WithEnd With End Sub5運(yùn)行結(jié)果運(yùn)行程序代碼,查看運(yùn)行的結(jié)果,如圖 7.4 所示。300圖 7.4 創(chuàng)建嵌入式圖表6程序分析在上面的代碼中,首先刪除當(dāng)前工作表中的嵌入圖表,如果當(dāng)前工作表中沒有嵌入圖 表,執(zhí)行 Delete 方法時(shí)將出現(xiàn)錯(cuò)誤,所以需使用錯(cuò)誤捕捉語句獲取錯(cuò)誤。接著使用 ChartObje

12、cts 集合對(duì)象的 Add 方法添加一個(gè)嵌入式圖表,最后設(shè)置圖表對(duì)象的相關(guān)屬性。案例 138確定圖表的位置1功能說明在用戶使用圖表分析和顯示數(shù)據(jù)的時(shí)候,常常需要根據(jù)需要確定圖表的位置。用戶可 以通過 VBA 代碼實(shí)現(xiàn)該功能。2語法說明在 Excel VBA 中,用戶可以通過 Chart 對(duì)象的 Location 方法,可改變圖表的放置位置。 該方法的語法格式如下:表達(dá)式.Location(Where, Name) 兩個(gè)參數(shù)的含義如下: Where:用來設(shè)置圖表移動(dòng)的目標(biāo)位置??稍O(shè)置為 xlLocationAsNewSheet(將圖表移 動(dòng)到新工 作表 )、 xlLocationAsObject

13、 ( 將 圖表嵌入 到現(xiàn)有工 作表中) 或 xlLocationAutomatic(Excel 控制圖表位置)三個(gè)常量之一。 Name:如果 Where 為 xlLocationAsObject,則該參數(shù)為必選參數(shù)。如果 Where 為 xlLocationAsObject , 則 該參數(shù)為 嵌 入該圖表 的 工作表的 名 稱。如果 Where 為 xlLocationAsNewSheet,則該參數(shù)為新工作表的名稱。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶需要用 VBA 代碼確定圖表的不同位置,其中原始數(shù)據(jù)如圖 7.5 所示。圖 7.

14、5 原始數(shù)據(jù)4編寫代碼(1)嵌入圖表轉(zhuǎn)圖表工作表的 VBA 代碼如下:Sub ChartForm1()Dim cht As ChartObject On Error Resume NextSet cht = ActiveSheet.ChartObjects(1)If cht Is Nothing Then Exit Subcht.Chart.Location xlLocationAsNewSheet, "銷量數(shù)據(jù)圖"End Sub(2)圖表工作表轉(zhuǎn)嵌入圖表的 VBA 代碼如下:Sub ChartForm2() Dim cht As ChartDim chto As Char

15、tObject On Error Resume NextSet cht = Charts("銷量數(shù)據(jù)圖")If cht Is Nothing Then Exit Subcht.Location xlLocationAsObject, ActiveSheet.Name Set chto = ActiveSheet.ChartObjects(1)With Range("A10:F20") chto.Top = .Top chto.Left = .Left chto.Width = .Width chto.Height = .HeightEnd WithEnd

16、 Sub5運(yùn)行結(jié)果運(yùn)行將嵌入圖表轉(zhuǎn)圖表工作表的程序代碼,查看運(yùn)行的結(jié)果,如圖 7.6 所示。305圖 7.6 嵌入圖表轉(zhuǎn)圖表工作表運(yùn)行圖表工作表轉(zhuǎn)嵌入圖表的代碼,查看運(yùn)行的結(jié)果,如圖 7.7 所示。圖 7.7 圖表工作表轉(zhuǎn)嵌入圖表6程序分析在上面第一段代碼中,通過工作表的 ChartObjects 集合返回的是一個(gè) ChartObject 對(duì)象, 要改變其位置,需使用該對(duì)象的 Chart 屬性返回一個(gè) Chart 對(duì)象,通過 Chart 對(duì)象的 Location 方法才能改變圖表對(duì)象的位置。案例 139刪除圖表1功能說明在 Excel VBA 中,用戶除了可以使用代碼創(chuàng)建圖表,還可以使用代碼刪

17、除圖表。在本 小節(jié)中,將結(jié)合具體的例子來演示如何使用 VBA 刪除圖表。2語法說明本例使用了 ChartObject 對(duì)象的三個(gè)方法來完成相應(yīng)的功能,各方法的含義如下:BringToFront:將圖表放到 z-次序前面,即將圖表顯示在最前面。Activate:使當(dāng)前圖表成為活動(dòng)圖表(激活圖表)。 Delete:刪除圖表。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶需要用 VBA 代碼演示如何刪除圖表,其中原始數(shù)據(jù)如圖 7.8 所示。圖 7.8 原始數(shù)據(jù)4編寫代碼刪除圖表的 VBA 代碼如下:Sub DeleteChart()Dim cht

18、 As ChartObjectFor Each cht In ActiveSheet.ChartObjects cht.BringToFrontcht.ActivateIf MsgBox("刪除圖表?", vbQuestion + vbYesNo, "刪除圖表") = vbYes Then cht.DeleteEnd If NextEnd Sub5運(yùn)行結(jié)果運(yùn)行程序代碼,查看運(yùn)行的結(jié)果,如圖 7.9 所示。圖 7.9 刪除第一個(gè)圖表單擊“是”按鈕后,刪除第二個(gè)圖表,如圖 7.10 所示。圖 7.11 刪除第二個(gè)圖表單擊“是”按鈕,查看刪除后的結(jié)果,如圖 7

19、.12 所示。圖 7.12 刪除圖表后的工作表6程序分析在本例中,通過循環(huán)語句依次激活工作表中的圖表對(duì)象,然后將其激活,提示用戶是 否刪除圖表。這種方法十分常見。7.2設(shè)置圖表的屬性在 Excel VBA 中,用戶除了可以創(chuàng)建和刪除圖表,還可以設(shè)置圖表的屬性。在本小節(jié) 中,將結(jié)合具體的例子來講解如何使用 VBA 設(shè)置圖表的屬性。案例 140確定是否是圖表工作表1功能說明在使用 Excel 分析數(shù)據(jù)的時(shí)候,首先需要判斷工作表的類型。數(shù)據(jù)工作表和圖表工作 表在屬性上有明顯的不同,因此首先判斷工作表是否是圖表工作表十分必要。 2語法說明在 Excel VBA 中,用戶可以使用 TypeName 函數(shù)

20、判斷工作表的類型,該函數(shù)的語法格 式如下: TypeName(varname) 參數(shù) varname 包含用戶定義類型變量之外的任何變量。TypeName 函數(shù)的返回值為一 個(gè)字符串,該字符串可能是數(shù)據(jù)類型名稱,或者是對(duì)象名稱。例如,在本例中,圖表工作表的返回值為“Chart”,普通工作表的返回值為“Worksheet”。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建對(duì)應(yīng)的圖表?,F(xiàn)在需要通過 VBA 判斷圖表工作表,其中原始數(shù)據(jù)如 圖 7.13 所示。圖 7.13 原始數(shù)據(jù)3064編寫代碼確定是否是圖表工作表的 VBA 代碼如下:Sub

21、 CheckChartForm() Dim i As IntegerFor i = 1 To ActiveWorkbook.Sheets.Count If TypeName(Sheets(i) = "Chart" Then Sheets("Sheet1").ActivateMsgBox "工作表" & Sheets(i).Name & "是圖表工作表!"End If NextEnd Sub5運(yùn)行結(jié)果運(yùn)行程序代碼,查看運(yùn)行的結(jié)果,如圖 7.14 所示。圖 7.14 運(yùn)行程序結(jié)果6程序分析在本例中,首先

22、通過 Sheets 對(duì)象的 Count 方法統(tǒng)計(jì)該工作薄中的工作表個(gè)數(shù)。然后使 用 For 循環(huán)檢測各個(gè)工作表的類型。案例 141添加網(wǎng)格線1功能說明在 Excel 圖表中,網(wǎng)格線是一個(gè)重要的工具。為圖表添加合適的網(wǎng)格線,用戶可以方 便的查看圖表中的數(shù)值。2語法說明在 Excel VBA 中,設(shè)置圖表網(wǎng)格線的屬性,主要使用 Axis.HasMajorGridlines 屬性和 Axis.HasMinorGridlines 屬性。其中,Axis.HasMajorGridline 屬性用來設(shè)置圖表的主要網(wǎng)格 線。如果坐標(biāo)軸有主要網(wǎng)格線,則該值為 True。只有主要坐標(biāo)軸組中的坐標(biāo)軸才能有網(wǎng)格 線。

23、其語法表達(dá)式如下:表達(dá)式.HasMajorGridlines 表達(dá)式表示代表 Axis 對(duì)象的變量。Axis.HasMinorGridlines 屬性用來設(shè)置圖表的次要 網(wǎng)格線。如果坐標(biāo)軸有次要網(wǎng)格線,則該值為 True。只有主要坐標(biāo)軸組中的坐標(biāo)軸才能有網(wǎng)格線。其語法表達(dá)式如下:表達(dá)式.HasMinorGridlines 表達(dá)式表示代表 Axis 對(duì)象的變量。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表。現(xiàn)在需要設(shè)置圖表的網(wǎng)格線屬性,其中原始數(shù)據(jù)和圖 表如圖 7.15 所示。圖 7.15 原始數(shù)據(jù)3084編寫代碼(1)設(shè)置

24、所有網(wǎng)格線的代碼如下:Sub AddMajorAxis() Dim ObjAxisFor Each ObjAxis In ActiveChart.Axes ObjAxis.HasMajorGridlines = True ObjAxis.HasMinorGridlines = TrueNext ObjAxisEnd Sub(2)添加主要網(wǎng)格線的代碼如下:Sub DeleteMinorAxis() Dim ObjAxisFor Each ObjAxis In ActiveChart.Axes ObjAxis.HasMajorGridlines = True ObjAxis.HasMinorGri

25、dlines = FalseNext ObjAxisEnd Sub(3)刪除所有網(wǎng)格線的代碼如下:Sub DeleteAllAixs() Dim ObjAxisFor Each ObjAxis In ActiveChart.Axes ObjAxis.HasMajorGridlines = False ObjAxis.HasMinorGridlines = FalseNext ObjAxisEnd Sub5運(yùn)行結(jié)果選中工作表中的圖表,運(yùn)行第一段代碼,查看程序運(yùn)新的結(jié)果,如圖 7.16 所示。圖 7.16 添加所有網(wǎng)格線選中工作表中的圖表,運(yùn)行第二段程序代碼,查看運(yùn)行的結(jié)果,如圖 7.17 所示。

26、圖 7.17 添加主要網(wǎng)格線選中工作表中的圖表,運(yùn)行第三段程序代碼,查看運(yùn)行的結(jié)果,如圖 7.18 所示。327圖 7.18 刪除所有的網(wǎng)格線6程序分析在本例的代碼比較簡單,在實(shí)際開發(fā)過程中,用戶可以通過程序代碼設(shè)置每個(gè)坐標(biāo)軸 的網(wǎng)格線屬性。有興趣的讀者可以自行測試。案例 142自定義數(shù)據(jù)源1功能說明在 Excel 中,用戶可以根據(jù)具體情況來設(shè)置圖表的數(shù)據(jù)源。同時(shí),可以使用程序代碼 動(dòng)態(tài)的修改圖表的數(shù)據(jù)源。2語法說明在 Excel VBA 中,使用 Chart 對(duì)象的 SetSourceData 方法,可為指定圖表設(shè)置源數(shù)據(jù)區(qū) 域。該方法的語法格式如下:表達(dá)式.SetSourceData(So

27、urce, PlotBy) 兩個(gè)參數(shù)的含義如下: Sourceo 指定源數(shù)據(jù)區(qū)域的 Range 對(duì)象。PlotBy 設(shè)置數(shù)據(jù)繪制方式。可為常量 xlColumns(數(shù)據(jù)系列在行中)或 xlRows(數(shù)據(jù) 系列在列中)之一。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表?,F(xiàn)在需要編寫 VBA 代碼,使用戶可以動(dòng)態(tài)修改數(shù)據(jù) 源,其中原始數(shù)據(jù)和圖表如圖 7.19 所示。圖 7.19 原始數(shù)據(jù)4編寫代碼自定義數(shù)據(jù)源的 VBA 代碼如下:Sub SetChartData()Dim NewData As RangeIf ActiveCha

28、rt Is Nothing Then MsgBox "沒有選中圖表!"Exit Sub End IfSet NewData = Application.InputBox(prompt:="自定義數(shù)據(jù)源。", Type:=8) ActiveChart.SetSourceData Source:=NewDataEnd Sub5運(yùn)行結(jié)果不選中任何圖表,運(yùn)行程序代碼,查看程序運(yùn)行的結(jié)果,如圖 7.20 所示。圖 7.20 不選中圖表運(yùn)行程序選中工作表中的默認(rèn)圖表,然后運(yùn)行程序代碼,如圖 7.21 所示。圖 7.21 選擇新的數(shù)據(jù)源單擊對(duì)話框中的“確定”按鈕,查看

29、修改后的圖表,如圖 7.22 所示。圖 7.22 修改后的圖表6程序分析在上面的代碼中,首先判斷用戶是否選中圖表,接著彈出對(duì)話框讓用戶輸入或選擇新 的數(shù)據(jù)源區(qū)域,最后使用 SetSourceData 方法為圖表設(shè)置新的數(shù)據(jù)源。案例 143添加圖表的陰影1功能說明用戶可以使用 VBA 代碼設(shè)置圖表的各種外觀屬性,在本例中,將演示如何使用代碼 添加圖表的陰影。2語法說明在 Excel VBA 中,獲取對(duì) ShadowFormat 對(duì)象的引用后,通過該對(duì)象的屬性就可控制 圖表對(duì)象的陰影效果。本例使用了以下屬性設(shè)置陰影效果:Visible 屬性:設(shè)置陰影是否可見;Blur 屬性:返回或設(shè)置指定底紋的模

30、糊度;Transparency 屬性:返回或設(shè)置指定填充的透明度,取值范圍為 0.0(不透明)到 1.0(清晰)之間;OffsetX 屬性:以磅為單位返回或設(shè)置指定形狀的陰影的水平偏移量。正偏移值將陰 影向右偏移,負(fù)偏移值將陰影向左偏移;OffsetY 屬性:以磅為單位返回或設(shè)置指定形狀陰影的垂直偏移。正偏移值將陰影向下偏移,負(fù)偏移值將陰影向上偏移。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表?,F(xiàn)在需要編寫 VBA 代碼,為原始的圖表添加陰影, 其中原始數(shù)據(jù)和圖表如圖 7.23 所示。圖 7.23 原始數(shù)據(jù)4編寫代碼為圖表

31、添加陰影的 VBA 代碼如下:Sub AddChartShadow()If ActiveChart Is Nothing Then MsgBox "沒有選擇圖表!"Exit Sub End IfWith ActiveChart.ChartArea.Format.Shadow.Visible = msoTrue.Blur = 15.Transparency = 0.2.OffsetX = 6.OffsetY = 6 End WithWith ActiveChart.PlotArea.Format.Shadow.Visible = msoTrue.Blur = 4.Transp

32、arency = 0.2.OffsetX = 3.OffsetY = 3 End WithEnd Sub5運(yùn)行結(jié)果選中原始圖表,運(yùn)行程序代碼,查看程序運(yùn)行的結(jié)果,如圖 7.24 所示。圖 7.24 添加圖表的陰影6程序分析以上代碼首先檢查是否選中了圖表,接著設(shè)置圖表外部區(qū)域的陰影效果,最后設(shè)置圖 表中繪制區(qū)域的陰影效果。如果用戶希望取消圖表的陰影,可以使用下面的代碼:If ActiveChart Is Nothing ThenMsgBox "請選擇需要設(shè)置格式的圖表!" Exit SubEnd IfActiveChart.ChartArea.Shadow = False A

33、ctiveChart.PlotArea.Format.Shadow.Visible = msoFalse案例 144添加數(shù)據(jù)標(biāo)簽1功能說明數(shù)據(jù)標(biāo)簽是圖表重要輔助工具,通過數(shù)據(jù)標(biāo)簽,用戶可以直觀的查看出圖表中的數(shù)值 用戶可以通過 VBA 代碼為圖表添加數(shù)據(jù)標(biāo)簽。2語法說明在 Excel VBA 中,SeriesCollection 集合對(duì)象包含指定的圖表或圖表組中所有 Series 對(duì) 象的集合。可用 Chart 對(duì)象的 SeriesCollection 方法可返回 SeriesCollection 集合。Series 對(duì) 象代表圖表上的系列,是 SeriesCollection 集合的成員。使

34、用該對(duì)象的屬性和方法可控制圖 表中的每個(gè)系列。常見的方法和屬性如下: ApplyDataLabels 方法:向系列應(yīng)用數(shù)據(jù)標(biāo)簽。Points 方法:返回一個(gè)對(duì)象,該對(duì)象表示數(shù)據(jù)系列中單個(gè)數(shù)據(jù)點(diǎn)(Point 對(duì)象)或所有 數(shù)據(jù)點(diǎn)的集合(Points 集合)。HasDataLabels 屬性:如果數(shù)據(jù)系列具有數(shù)據(jù)標(biāo)簽,則該屬性值為 True。在 Excel VBA 中,Point 對(duì)象代表圖表系列中的單個(gè)數(shù)據(jù)點(diǎn)。通過該對(duì)象可控制圖表 中數(shù)據(jù)系列的每一個(gè)數(shù)據(jù)點(diǎn),如本例使用 DataLabel 設(shè)置數(shù)據(jù)點(diǎn)的標(biāo)簽的顯示內(nèi)容。 3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)

35、據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表?,F(xiàn)在需要編寫 VBA 代碼,為原始的圖表添加陰影, 其中原始數(shù)據(jù)和圖表如圖 7.25 所示。圖 7.25 原始數(shù)據(jù)4編寫代碼添加數(shù)據(jù)標(biāo)簽的 VBA 代碼如下:Sub 顯示標(biāo)簽()Dim i As Integer, n As Integer, ser As SeriesIf ActiveChart Is Nothing ThenMsgBox "請選擇需要設(shè)置格式的圖表!" Exit SubEnd IfFor Each ser In ActiveChart.SeriesCollection ser.ApplyDataLabels Type

36、:=xlDataLabelsShowValue, _AutoText:=True, LegendKey:=Falsen = ser.Points.Count For i = 1 To nser.Points(i).DataLabel.Text = ser.Values(i) NextNextEnd Sub5運(yùn)行結(jié)果選中圖表,運(yùn)行程序代碼,查看程序運(yùn)行的結(jié)果,如圖 7.26 所示。圖 7.26 查看添加的數(shù)據(jù)標(biāo)簽6程序分析在上面的代碼中,通過一個(gè)循環(huán)嵌套,對(duì)圖表中的系列進(jìn)行逐個(gè)處理。每個(gè)系列都有 多個(gè)數(shù)據(jù)點(diǎn),內(nèi)循環(huán)完成顯示數(shù)據(jù)的操作。隱藏標(biāo)簽的 VBA 代碼如下: If ActiveChart

37、Is Nothing Then MsgBox "請選擇需要設(shè)置格式的圖表!" Exit SubEnd IfFor Each ser In ActiveChart.SeriesCollection ser.HasDataLabels = FalseNext案例 145將圖表保存為圖片1功能說明圖表是特殊的對(duì)象,在 Excel 中用戶可以靈活處理圖表對(duì)象。而為了在其他程序中顯 示或者編輯圖表,用戶可以將圖表保存為圖片。2語法說明在 Excel VBA 中,使用 ChartObjects 對(duì)象的 CopyPicture 方法,可將選中圖表作為圖 片復(fù)制到剪貼板。該方法的語法格式如

38、下:表達(dá)式.CopyPicture(Appearance, Format) 參數(shù) Appearance 設(shè)置圖片的復(fù)制方式。可設(shè)置為以下兩個(gè)常量之一:xlScreen:圖片盡可能按其屏幕顯示進(jìn)行復(fù)制,這是默認(rèn)值。xlPrinter:圖片按其打印效果進(jìn)行復(fù)制。參數(shù) Format 設(shè)置圖片的格式??稍O(shè)置以為以下兩個(gè)常量之一: xlBitmap:位圖(.bmp、.jpg、.gif)。 xlPicture:繪制圖片(.png、.wmf、.mix)。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表?,F(xiàn)在需要編寫 VBA 代碼,將圖表轉(zhuǎn)換

39、為圖片保存, 如圖 7.27 所示。圖 7.27 原始數(shù)據(jù)4編寫代碼將圖表轉(zhuǎn)換為圖片的 VBA 代碼如下:Sub SaveASPic()If ActiveChart Is Nothing Then MsgBox "請選擇圖表!"Exit Sub End IfActiveChart.CopyPicture Appearance:=xlScreen, Format:=2 ActiveWindow.Visible = FalseRange("I8").Select ActiveSheet.PasteEnd Sub5運(yùn)行結(jié)果選中圖表,運(yùn)行程序代碼,查看程序運(yùn)行的

40、結(jié)果,如圖 7.28 所示。圖 7.28 運(yùn)行的結(jié)果6程序分析在上面的代碼中,為了簡單起見,選擇將圖表保存為位圖的形式。案例 146設(shè)置圖表顏色1功能說明圖表具有直觀的特點(diǎn),用戶可以設(shè)置圖表顏色,來增加圖表的對(duì)比度。用戶可以通過VBA 代碼設(shè)置圖表的顏色。2語法說明本例通過圖表的相關(guān)屬性獲取對(duì)各子對(duì)象的引用,然后逐個(gè)設(shè)置子對(duì)象的填充顏色。 本例用到的子對(duì)象如下: ChartArea:圖表區(qū)域; PlotArea:繪圖區(qū); Legend:圖例; ChartTitle:圖表標(biāo)題; Axes(xlValue):數(shù)值軸; Axes(xlCategory):分類軸; SeriesCollection:序

41、列。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表。現(xiàn)在需要編寫 VBA 代碼,設(shè)置圖表的數(shù)據(jù)系列,如 圖 7.29 所示。圖 7.29 原始數(shù)據(jù)4編寫代碼設(shè)置圖表顏色的 VBA 代碼如下:Sub SetChartColors() Dim i As IntegerIf ActiveChart Is Nothing Then MsgBox "請選擇圖表!"Exit Sub End IfWith ActiveChart.ChartArea.Format.Fill.ForeColor.RGB = RGB(0,

42、255, 255).PlotArea.Format.Fill.ForeColor.RGB = RGB(255, 0, 255) End WithEnd Sub5運(yùn)行結(jié)果選中圖表,運(yùn)行程序代碼,查看程序運(yùn)行的結(jié)果,如圖 7.30 所示。圖 7.30 設(shè)置圖表顏色6程序分析在 Excel VBA 中,用戶可以設(shè)置圖表多個(gè)子對(duì)象的顏色,不僅僅是繪圖區(qū)和圖表區(qū)。 本小節(jié)限于篇幅,就不詳細(xì)列出各種對(duì)象的屬性。案例 147按值顯示顏色1功能說明在 Excel 圖表中,數(shù)據(jù)系列的顏色通常采用默認(rèn)顏色。用戶可以通過 VBA 代碼設(shè)置 數(shù)據(jù)系列的顏色。2語法說明在 Excel VBA 中,通過 Interior

43、 對(duì)象獲取每個(gè)數(shù)據(jù)點(diǎn)對(duì)象(Point)的對(duì)象內(nèi)部,再通 過 Interior 對(duì)象的屬性 ColorIndex 設(shè)置每個(gè)數(shù)據(jù)點(diǎn)的填充顏色。3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表。現(xiàn)在需要編寫 VBA 代碼,設(shè)置圖表中數(shù)據(jù)系列的顏 色,原始圖表如圖 7.31 所示。圖 7.31 原始圖表4編寫代碼按值顯示顏色的 VBA 代碼如下:Sub SetColorByValue() Dim Ser As SeriesDim iTempColor As Integer Dim i As LongDim lColor As Inte

44、gerIf ActiveChart Is Nothing Then MsgBox "請選擇圖表!"Exit Sub End IfFor Each Ser In ActiveChart.SeriesCollection For i = 1 To Ser.Points.CountSer.Points(i).Interior.ColorIndex = xlNone iTempColor = Ser.Values(i)Select Case iTempColor Case Is < 400lColor = 7 Case Is >= 600lColor = 5Case E

45、lselColor = 8 End SelectSer.Points(i).Interior.ColorIndex = lColor Next iNext SerEnd Sub5運(yùn)行結(jié)果選中圖表,運(yùn)行程序代碼,查看程序運(yùn)行的結(jié)果,如圖 7.32 所示。圖 7.32 按值顯示顏色6程序分析在上面的代碼中,根據(jù)每個(gè)序列不同數(shù)據(jù)點(diǎn)的值生成一個(gè)顏色值,再將該值賦值給每 個(gè)數(shù)據(jù)點(diǎn)作為顏色值。案例 148設(shè)置圖表類型1功能說明Excel 中提供了多種圖表類型,用戶可以根據(jù)數(shù)據(jù)特點(diǎn),選擇不同的圖表類型。用戶可以通過 VBA 代碼來設(shè)置不同的圖表類型。2語法說明在 Excel VBA 中,用戶可以私用 Cha

46、rtType 屬性設(shè)置圖表的類型。在 Excel 中,常見 的圖表類型 ChartType 屬性如表 7.2 所示。表 7.2 XlChartType的常見取值XlChartType圖表類型xl3DArea三維面積圖xl3DLine三維折線圖xl3DPie三維餅圖xlArea面積圖xl3DLine三維折線圖xlBubble氣泡圖xlColumnStacked堆積柱形圖xlLine折線圖xlXYScatter散點(diǎn)圖xlPie餅圖3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個(gè)季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)的圖表?,F(xiàn)在需要編寫 VBA 代碼,修改圖表的類型,原始圖

47、表如圖 7.33 所示。圖 7.33 原始圖表4編寫代碼設(shè)置圖表類型的 VBA 代碼如下:Sub SetChartForm()If ActiveChart Is Nothing Then MsgBox "沒有選擇圖表!"Exit Sub End IfWith ActiveChart.ChartType = xl3DLineWith .ChartArea.Font.Name = "Arial".FontStyle = "Regular".Size = 10.Bold = True.Italic = True End With.HasLe

48、gend = True.Legend.Position = xlLegendPositionBottom.HasTitle = True.ChartTitle.Text = "銷售數(shù)據(jù)圖" End WithEnd Sub5運(yùn)行結(jié)果選擇默認(rèn)的圖表,然后運(yùn)行程序代碼,結(jié)果如圖 7.34 所示。圖 7.34 修改圖表類型6程序分析在本例中,首先將圖表設(shè)置為三維折線圖,然后依次設(shè)置圖表的標(biāo)題、圖例和圖表的 字體屬性。用戶可以根據(jù)自己的喜好來設(shè)置其他的屬性數(shù)值。案例 149設(shè)置數(shù)據(jù)系列的圖表類型1功能說明在 Excel 中,用戶除了可以設(shè)置圖表的類型,還可以為不同的數(shù)據(jù)系列設(shè)置圖表類

49、型。 用戶可以使用 VBA 設(shè)置不同數(shù)據(jù)系列的圖表類型。2語法說明本例所涉及的主要技術(shù)是 Series 數(shù)據(jù)序列對(duì)象是 SeriesCollection 集合的成員。 SeriesCollection 集合中包含的 Series 對(duì)象的個(gè)數(shù)與圖例中包含的圖例項(xiàng)個(gè)數(shù)對(duì)應(yīng)。Series 對(duì)象表示繪圖區(qū)中某個(gè)數(shù)據(jù)序列。需要注意的是,如果需要修改數(shù)據(jù)序列中單個(gè)圖形,則 需要使用 Series 對(duì)象的子對(duì)象 Points 集合。因?yàn)閿?shù)據(jù)序列中單個(gè)圖形的類型為 Point。 3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的上下半年的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)系列的圖表?,F(xiàn)在需要編

50、寫 VBA 代碼,修改其中數(shù)據(jù)系列的 圖表類型,原始圖表如圖 7.35 所示。圖 7.35 原始圖表3284編寫代碼設(shè)置數(shù)據(jù)系列圖表類型的 VBA 代碼如下:Sub ChartSeriesChange() Dim Ser As SeriesDim Pt As PointSet Ser = Worksheets("Sheet1").ChartObjects(1).Chart.SeriesCollection(1) Ser.Type = xlLineSet Ser = Worksheets("Sheet1").ChartObjects(1).Chart.Se

51、riesCollection(2) Ser.Type = xlColumnEnd Sub5運(yùn)行結(jié)果選擇默認(rèn)的圖表,然后運(yùn)行程序代碼,結(jié)果如圖 7.36 所示。圖 7.36 修改數(shù)據(jù)系列的圖表類型6程序分析在改變圖表數(shù)據(jù)序列類型時(shí),用戶需要注意,不可以在同一圖表中設(shè)置兩種不同維度 的數(shù)據(jù)序列。折線圖、XY 散點(diǎn)和圖氣泡等都屬于二維圖表類型。3D 柱狀圖、3D 餅圖和 3D 氣泡圖等都屬于三維圖表類型。案例 150設(shè)置坐標(biāo)軸的屬性1功能說明坐標(biāo)軸是圖表中的重要對(duì)象,對(duì)于不同范圍的數(shù)據(jù),用戶應(yīng)該選擇不同的刻度、單位 和間隔等。用戶可以使用 VBA 設(shè)置坐標(biāo)軸的屬性。2語法說明在 Excel VBA

52、中,通過 Chart 對(duì)象獲取坐標(biāo)軸對(duì)象的語法格式如下所示。 Chart.Axes(Type,AxisGroup) 其中 Type 參數(shù)用于指定軸類型,該參數(shù)可以接受 XlAxisType 枚舉值中的三個(gè)常量值。 AxisGroup 參數(shù)指定坐標(biāo)軸主次之分。當(dāng)設(shè)置為 xlSecondary 時(shí),說明坐標(biāo)軸為輔助軸。當(dāng) 設(shè)置為 xlPrimary 時(shí),說明坐標(biāo)軸為主坐標(biāo)軸。XlAxisType 枚舉值如表 7.3 所示。表 7.3 XlAxisType 枚舉值表常量名常量值描述xlCategory1表示坐標(biāo)軸顯示的類別。常用于設(shè)置圖表的水平軸。xlSeriesAxis3表示坐標(biāo)軸顯示的數(shù)據(jù)系列。

53、該常量只能用于3D圖表。xlValue2坐標(biāo)軸顯示值。常用語設(shè)置圖表的垂直軸3案例說明某公司統(tǒng)計(jì)了該公司武漢、北京、上海、深圳和重慶地區(qū)的上下半年的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對(duì)應(yīng)系列的圖表。現(xiàn)在需要編寫 VBA 代碼,修改原始圖表中的坐 標(biāo)軸蘇醒,原始圖表如圖 7.37 所示。圖 7.37 原始圖表3304編寫代碼設(shè)置坐標(biāo)軸線屬性的 VBA 代碼如下:Sub SetAxies() Dim Axs As AxisWith Worksheets("Sheet1").ChartObjects(1).Chart Set Axs = .Axes(xlValue)With Ax

54、s.HasTitle = True.AxisTitle.Caption = "上半年銷售數(shù)據(jù)".AxisTitle.Orientation = xlVertical.TickLabels.NumberFormat = "0" End WithSet Axs = .Axes(xlCategory) With Axs.HasTitle = True.AxisTitle.Caption = "地區(qū)分布刻度".TickLabels.Orientation = xlVertical End With.SeriesCollection(2).AxisGroup = 2Set Axs = .Axes(xlValue, 2) With Axs.HasTitle = True.AxisTitl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論