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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

6、g型可讀寫,返回或設置行或列在圖表中作為數(shù)據(jù)系列使用的方式??蔀橐韵耎lRowCol常量之一:xlColumns 或xlRows。Visible返回或設置一個XlSheetVisibility值,用于確定對象是否可見。Walls是一個只讀屬性,返回一個Walls對象,此表示三維圖表的背景墻。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(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運行結果運行程序代碼,查看運行的結果,如圖 7.2 所示。圖 7.2 創(chuàng)建圖表工作表2986程序分析如果用戶對圖表的屬性不熟悉的時候,可以使用宏功能來創(chuàng)建圖表。查看宏代碼中

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

9、法,可向集合中添加嵌入式圖表。其語法格式如下: 表達式.Add(Left, Top, Width, Height) 該方法的 4 個參數(shù)指定嵌入式圖表尺寸,分別設置左上角的坐標位置和圖表的初始大小。使用 ChartObjects 集合的 Delete 方法可刪除指定工作表的嵌入式圖表。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(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運行結果運行程序代碼,查看運行的結果,如圖 7.4 所示。300圖 7.4 創(chuàng)建嵌入式圖表6程序分析在上面的代碼中,首先刪除當前工作表中的嵌入圖表,如果當前工作表中沒有嵌入圖 表,執(zhí)行 Delete 方法時將出現(xiàn)錯誤,所以需使用錯誤捕捉語句獲取錯誤。接著使用 ChartObje

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

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

14、5 原始數(shù)據(jù)4編寫代碼(1)嵌入圖表轉圖表工作表的 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)圖表工作表轉嵌入圖表的 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運行結果運行將嵌入圖表轉圖表工作表的程序代碼,查看運行的結果,如圖 7.6 所示。305圖 7.6 嵌入圖表轉圖表工作表運行圖表工作表轉嵌入圖表的代碼,查看運行的結果,如圖 7.7 所示。圖 7.7 圖表工作表轉嵌入圖表6程序分析在上面第一段代碼中,通過工作表的 ChartObjects 集合返回的是一個 ChartObject 對象, 要改變其位置,需使用該對象的 Chart 屬性返回一個 Chart 對象,通過 Chart 對象的 Location 方法才能改變圖表對象的位置。案例 139刪除圖表1功能說明在 Excel VBA 中,用戶除了可以使用代碼創(chuàng)建圖表,還可以使用代碼刪

17、除圖表。在本 小節(jié)中,將結合具體的例子來演示如何使用 VBA 刪除圖表。2語法說明本例使用了 ChartObject 對象的三個方法來完成相應的功能,各方法的含義如下:BringToFront:將圖表放到 z-次序前面,即將圖表顯示在最前面。Activate:使當前圖表成為活動圖表(激活圖表)。 Delete:刪除圖表。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(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運行結果運行程序代碼,查看運行的結果,如圖 7.9 所示。圖 7.9 刪除第一個圖表單擊“是”按鈕后,刪除第二個圖表,如圖 7.10 所示。圖 7.11 刪除第二個圖表單擊“是”按鈕,查看刪除后的結果,如圖 7

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

20、判斷工作表的類型,該函數(shù)的語法格 式如下: TypeName(varname) 參數(shù) varname 包含用戶定義類型變量之外的任何變量。TypeName 函數(shù)的返回值為一 個字符串,該字符串可能是數(shù)據(jù)類型名稱,或者是對象名稱。例如,在本例中,圖表工作表的返回值為“Chart”,普通工作表的返回值為“Worksheet”。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuà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運行結果運行程序代碼,查看運行的結果,如圖 7.14 所示。圖 7.14 運行程序結果6程序分析在本例中,首先

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

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

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運行結果選中工作表中的圖表,運行第一段代碼,查看程序運新的結果,如圖 7.16 所示。圖 7.16 添加所有網(wǎng)格線選中工作表中的圖表,運行第二段程序代碼,查看運行的結果,如圖 7.17 所示。

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

27、urce, PlotBy) 兩個參數(shù)的含義如下: Sourceo 指定源數(shù)據(jù)區(qū)域的 Range 對象。PlotBy 設置數(shù)據(jù)繪制方式??蔀槌A?xlColumns(數(shù)據(jù)系列在行中)或 xlRows(數(shù)據(jù) 系列在列中)之一。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(shù)據(jù),根據(jù)該數(shù)據(jù),用戶創(chuàng)建了對應的圖表。現(xiàn)在需要編寫 VBA 代碼,使用戶可以動態(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運行結果不選中任何圖表,運行程序代碼,查看程序運行的結果,如圖 7.20 所示。圖 7.20 不選中圖表運行程序選中工作表中的默認圖表,然后運行程序代碼,如圖 7.21 所示。圖 7.21 選擇新的數(shù)據(jù)源單擊對話框中的“確定”按鈕,查看

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

30、糊度;Transparency 屬性:返回或設置指定填充的透明度,取值范圍為 0.0(不透明)到 1.0(清晰)之間;OffsetX 屬性:以磅為單位返回或設置指定形狀的陰影的水平偏移量。正偏移值將陰 影向右偏移,負偏移值將陰影向左偏移;OffsetY 屬性:以磅為單位返回或設置指定形狀陰影的垂直偏移。正偏移值將陰影向下偏移,負偏移值將陰影向上偏移。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuà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運行結果選中原始圖表,運行程序代碼,查看程序運行的結果,如圖 7.24 所示。圖 7.24 添加圖表的陰影6程序分析以上代碼首先檢查是否選中了圖表,接著設置圖表外部區(qū)域的陰影效果,最后設置圖 表中繪制區(qū)域的陰影效果。如果用戶希望取消圖表的陰影,可以使用下面的代碼:If ActiveChart Is Nothing ThenMsgBox "請選擇需要設置格式的圖表!" Exit SubEnd IfActiveChart.ChartArea.Shadow = False A

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

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

35、據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對應的圖表?,F(xiàn)在需要編寫 VBA 代碼,為原始的圖表添加陰影, 其中原始數(shù)據(jù)和圖表如圖 7.25 所示。圖 7.25 原始數(shù)據(jù)4編寫代碼添加數(shù)據(jù)標簽的 VBA 代碼如下:Sub 顯示標簽()Dim i As Integer, n As Integer, ser As SeriesIf ActiveChart Is Nothing ThenMsgBox "請選擇需要設置格式的圖表!" 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運行結果選中圖表,運行程序代碼,查看程序運行的結果,如圖 7.26 所示。圖 7.26 查看添加的數(shù)據(jù)標簽6程序分析在上面的代碼中,通過一個循環(huán)嵌套,對圖表中的系列進行逐個處理。每個系列都有 多個數(shù)據(jù)點,內(nèi)循環(huán)完成顯示數(shù)據(jù)的操作。隱藏標簽的 VBA 代碼如下: If ActiveChart

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

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

39、為圖片保存, 如圖 7.27 所示。圖 7.27 原始數(shù)據(jù)4編寫代碼將圖表轉換為圖片的 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運行結果選中圖表,運行程序代碼,查看程序運行的

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

41、列。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對應的圖表?,F(xiàn)在需要編寫 VBA 代碼,設置圖表的數(shù)據(jù)系列,如 圖 7.29 所示。圖 7.29 原始數(shù)據(jù)4編寫代碼設置圖表顏色的 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運行結果選中圖表,運行程序代碼,查看程序運行的結果,如圖 7.30 所示。圖 7.30 設置圖表顏色6程序分析在 Excel VBA 中,用戶可以設置圖表多個子對象的顏色,不僅僅是繪圖區(qū)和圖表區(qū)。 本小節(jié)限于篇幅,就不詳細列出各種對象的屬性。案例 147按值顯示顏色1功能說明在 Excel 圖表中,數(shù)據(jù)系列的顏色通常采用默認顏色。用戶可以通過 VBA 代碼設置 數(shù)據(jù)系列的顏色。2語法說明在 Excel VBA 中,通過 Interior

43、 對象獲取每個數(shù)據(jù)點對象(Point)的對象內(nèi)部,再通 過 Interior 對象的屬性 ColorIndex 設置每個數(shù)據(jù)點的填充顏色。3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的四個季度的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對應的圖表。現(xiàn)在需要編寫 VBA 代碼,設置圖表中數(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運行結果選中圖表,運行程序代碼,查看程序運行的結果,如圖 7.32 所示。圖 7.32 按值顯示顏色6程序分析在上面的代碼中,根據(jù)每個序列不同數(shù)據(jù)點的值生成一個顏色值,再將該值賦值給每 個數(shù)據(jù)點作為顏色值。案例 148設置圖表類型1功能說明Excel 中提供了多種圖表類型,用戶可以根據(jù)數(shù)據(jù)特點,選擇不同的圖表類型。用戶可以通過 VBA 代碼來設置不同的圖表類型。2語法說明在 Excel VBA 中,用戶可以私用 Cha

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

47、表如圖 7.33 所示。圖 7.33 原始圖表4編寫代碼設置圖表類型的 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運行結果選擇默認的圖表,然后運行程序代碼,結果如圖 7.34 所示。圖 7.34 修改圖表類型6程序分析在本例中,首先將圖表設置為三維折線圖,然后依次設置圖表的標題、圖例和圖表的 字體屬性。用戶可以根據(jù)自己的喜好來設置其他的屬性數(shù)值。案例 149設置數(shù)據(jù)系列的圖表類型1功能說明在 Excel 中,用戶除了可以設置圖表的類型,還可以為不同的數(shù)據(jù)系列設置圖表類

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

50、寫 VBA 代碼,修改其中數(shù)據(jù)系列的 圖表類型,原始圖表如圖 7.35 所示。圖 7.35 原始圖表3284編寫代碼設置數(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運行結果選擇默認的圖表,然后運行程序代碼,結果如圖 7.36 所示。圖 7.36 修改數(shù)據(jù)系列的圖表類型6程序分析在改變圖表數(shù)據(jù)序列類型時,用戶需要注意,不可以在同一圖表中設置兩種不同維度 的數(shù)據(jù)序列。折線圖、XY 散點和圖氣泡等都屬于二維圖表類型。3D 柱狀圖、3D 餅圖和 3D 氣泡圖等都屬于三維圖表類型。案例 150設置坐標軸的屬性1功能說明坐標軸是圖表中的重要對象,對于不同范圍的數(shù)據(jù),用戶應該選擇不同的刻度、單位 和間隔等。用戶可以使用 VBA 設置坐標軸的屬性。2語法說明在 Excel VBA

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

53、該常量只能用于3D圖表。xlValue2坐標軸顯示值。常用語設置圖表的垂直軸3案例說明某公司統(tǒng)計了該公司武漢、北京、上海、深圳和重慶地區(qū)的上下半年的銷量數(shù)據(jù),根 據(jù)該數(shù)據(jù),用戶創(chuàng)建了對應系列的圖表?,F(xiàn)在需要編寫 VBA 代碼,修改原始圖表中的坐 標軸蘇醒,原始圖表如圖 7.37 所示。圖 7.37 原始圖表3304編寫代碼設置坐標軸線屬性的 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)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論