Excel-VBA-處理圖形圖表大全剖析_第1頁
Excel-VBA-處理圖形圖表大全剖析_第2頁
Excel-VBA-處理圖形圖表大全剖析_第3頁
Excel-VBA-處理圖形圖表大全剖析_第4頁
Excel-VBA-處理圖形圖表大全剖析_第5頁
已閱讀5頁,還剩43頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、Excel-VBA- 處理圖形圖表大全剖析VBA、圖表各元素在 VBA中的表達(dá)方式1、圖表區(qū)VBAg 稱:ChartArea2、繪圖區(qū)VBAg 稱:PlotArea調(diào)整繪圖區(qū)的大小以及在圖表中的位置,指定繪圖區(qū)的 Top、 Left 、 Height 和Width 屬性。 3 、數(shù)據(jù)系列VBA 稱:Series指定給定系列語法 :ChatObject.SeriesCollection(Index) ,其中 Index 是數(shù)字范圍,從1 開始,最大值是圖表中系列的數(shù)量或系列名稱的數(shù)量。4、圖表軸VBAg 稱:Axis指定給定軸的簡單語法:ChatObject.Axes(Type),其中Type指

2、定軸的ExcelVBA常量。輔助軸語法 :ChatObject.Axes(Type , AxisGroup) 。5、網(wǎng)格線VBAdS稱:HasMajorGridlines 和 HasMinorGridlines根據(jù)需要可以選擇顯示或者不顯示主要網(wǎng)格線或次要網(wǎng)格線。若顯示網(wǎng)格線,可以設(shè)置線條的圖案( 顏色、線寬、線條樣式等等) 。6、數(shù)據(jù)標(biāo)簽VBAdS稱:DataLabels 和 DataLabel圖表中所有系列的所有點顯示特定類型的數(shù)據(jù)標(biāo)簽或不顯示數(shù)據(jù)標(biāo)簽:ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone特定系列顯示數(shù)值(Y) 作為數(shù)

3、據(jù)標(biāo)簽 :With ActiveChart.SeriesCollection( “Xdata” ).HasDataLabels=True.ApplyDataLabels Type:=xlDataLabelsShowValue End With特定的點在它的數(shù)據(jù)標(biāo)簽中顯示文字With ActiveChart.SeriesCollection( “Xdata” ).Points(1).HasDataLabels=True.DataLabel.Text= ” MyLabel”End With(4)將公式放置在某個系列上的某特定點的數(shù)據(jù)標(biāo)簽中(在公式中需使用RC樣 式) With ActiveChar

4、t.SeriesCollection(“Xdata” ).point(1).HasDataLabels=True.DataLabel.Text= ” Sheet1.R1C1”End With7、圖表標(biāo)題、圖例和數(shù)據(jù)表VBAS稱:ChartTitle 、HasLegend和 HasDataTable 可以用 VBA旨定圖表標(biāo)題 和圖例的位置、文字和文字格式。8、趨勢線和誤差線VBAdS稱:Trendlines 和 ErrorBar二、圖表類型Excel 標(biāo)準(zhǔn)圖表類型圖表類型 描述 Excel VBA 常量 柱形圖 簇狀柱形圖 xlColumnClustered3D簇狀柱形圖 xl3DColumn

5、Clustered堆積柱形圖 xlColumnStacked3D堆積柱形圖 xl3DColumnStacked百分比堆積柱形圖 xlColumnStacked1003D百分比堆積柱形圖xl3DColumnStacked1003D柱形圖xl3DColumn條形圖簇狀條形圖xlBarClustered3D簇狀條形圖 xl3DBarClustered堆積條形圖 xlBarStacked3D堆積條形圖 xl3DBarStacked百分比堆積條形圖 xlBarStacked1003D百分比堆積條形圖xl3DBarStacked100折線圖折線圖xlLine數(shù)據(jù)點折線圖 xlLineMarkers堆積折線

6、圖 xlLineStacked堆積數(shù)據(jù)點折線圖xlLineMarkersStacked百分比堆積折線圖xlLineStacked100百分比堆積數(shù)據(jù)點折線圖 xlLineMarkersstacked1003D折線圖xl3DLine 餅圖餅圖xlPie分離型餅圖 xlPieExploded3D 餅圖 xl3DPie分離型 3D餅圖 xl3DPieExploded復(fù)合餅圖 xlPieOfPie復(fù)合條餅圖 xlBarOfPie XY( 散點 ) 圖 散點圖 xlXYScatter平滑線散點圖 xlXYScatterSmooth無數(shù)據(jù)點平滑線散點圖 xlXYScatterSmoothNoMarkers

7、折線散點圖 xlXYScatterLines無數(shù)據(jù)點折線散點圖 xlXYScatterLinesNoMarkers 氣泡圖 氣泡圖 xlBubble3D氣泡圖xlBubble3DEffect 面積圖 面積圖xlArea3D面積圖 xl3DArea堆積面積圖 xlAreaStacked3D堆積面積圖 xl3DAreaStacked百分比堆積面積圖 xlAreaStacked1003D百分比堆積面積圖xl3DAreaStacked100 圓環(huán)圖 圓環(huán)圖xlDoughnut分離型圓環(huán)圖xlDoughnutExploded 雷達(dá)圖 雷達(dá)圖 xlRadar數(shù)據(jù)點雷達(dá)圖xlRadarMarkers填充雷達(dá)

8、圖 xlRadarFilled 曲面圖 3D 曲面圖 xlSurface曲面圖 ( 俯視 ) xlSurfaceTopView3D 曲面圖(框架圖)xlSurfaceWireframe曲面圖 (俯視框架圖 ) xlSurfaceWireframeTopView 股價圖 盤高 -盤低 -收盤圖 xlStockHLC成交量 -盤高 -盤低 - 收盤圖 xlStockVHLC開盤 - 盤高 - 盤低 - 收盤圖 xlStockOHLC成交量 -開盤 -盤高 -盤低 - 收盤圖 xlStockVOHLC 圓柱圖 柱形圓柱圖xlCylinderColClustered條形圓柱圖xlCylinderBar

9、ColClustered堆積柱形圓柱圖xlCylinderColStacked堆積條形圓柱圖xlCylinderBarStacked百分比堆積柱形圓柱圖xlCylinderColStacked100百分比堆積條形圓柱圖xlCylinderBarStacked1003D柱形圓柱圖xlCylinderCol 圓錐圖柱形圓錐圖xlConeColClustered條形圓錐圖 xlConeBarClustered堆積柱形圓錐圖xlConeColStacked堆積條形圓錐圖xlConeBarStacked百分比堆積柱形圓錐圖xlConeColStacked100百分比堆積條形圓錐圖xlConeBarSta

10、cked1003D柱形圓錐圖xlConeCol棱錐圖柱形棱錐圖xlPyramidColClustered條形棱錐圖 xlPyramidBarClustered堆積柱形棱錐圖xlPyramidColStacked堆積條形棱錐圖xlPyramidBarStacked百分比堆積柱形棱錐圖xlPyramidColStacked100百分比堆積條形棱錐圖xlPyramidBarStacked1003D柱形棱錐圖xlPyramidColvbaActiveSheet.UsedRange.Rows.Count TOC o 1-5 h z 獲取工作表的行數(shù)( 注 : 考慮向前兼容性)Cells.Item(5,C

11、)引單元格C5Cells.Item(5,3)引單元格C5Application.WorksheetFunction.IsNumber(A1) 使用工作表函數(shù)檢查 A1 單元格中的數(shù)據(jù)是否為數(shù)字Range(A:A).Find(Application.WorksheetFunction.Max(Range(A:A).Activate激活單元格區(qū)域A 列中最大值的單元格Cells(8,8).FormulaArray=SUM(R2C-1:R-1C-1*R2C:R-1C)在單元格中輸入數(shù)組公式。注意必須使用 R1C1 樣式的表達(dá)式ActiveSheet.ChartObjects.Count獲取當(dāng)前工作表

12、中圖表的個數(shù)ActiveSheet.ChartObjects(Chart1).Select選中當(dāng)前工作表中圖表Chart1ActiveSheet.ChartObjects(Chart1).Activate選中當(dāng)前圖表區(qū)域ActiveChart.ChartArea.Select選中當(dāng)前圖表區(qū)域WorkSheets(Sheet1).ChartObjects(Chart2).Chart.ChartArea.Interior.ColorIndex=2更改工作表中圖表的圖表區(qū)的背景顏色Sheets(Chart2).ChartArea.Interior.ColorIndex=2更改圖表工作表中圖表區(qū)的顏色

13、Charts.Add添加新的圖表工作表ActiveChart.SetSourceDataSource:=Sheets(Sheet1).Range(A1:D5),PlotBy:=xlColumns指定圖表數(shù)據(jù)源并按列排列ActiveChart.Location Where:=xlLocationAsNewSheet 新圖表作為新圖表工作表將繪圖區(qū)顏色變?yōu)榘咨獳ctiveChart.PlotArea.Interior.ColorIndex=xlNoneWorkSheets(Sheet1).ChartObjects(1).Chart.Export FileName:=C:MyChart.gif,Fi

14、lterName:=GIF將圖表 1 導(dǎo)出到 C 盤上并命名為 MyChart.gifActiveSheet.ChartObjects.Delete刪除工作表上所有的 ChartObject 對象ActiveWorkbook.Charts.Delete刪除當(dāng)前工作簿中所有的圖表工作表,Excel中的VBA常量和編碼值所代表的標(biāo)準(zhǔn)圖表類型圖表類型描述Excel VBA 常量 編碼值( 注 : 下面按此順序排列) 柱形圖簇狀柱形圖 xlColumnClustered 513D簇狀柱形圖一xl3DColumnClustered 54堆積柱形圖 xlColumnStacked 523D堆積柱形圖一xl

15、3DColumnStacked 55百分比堆積柱形圖 xlColumnStacked100 533D百分比堆積柱形圖一xl3DColumnStacked100 563D柱形圖一xl3DColumn 4100 條形圖 簇狀條形圖 xlBarClustered 573D簇狀條形圖一xl3DBarClustered 60堆積條形圖 xlBarStacked 583D堆積條形圖一xl3DBarStacked 61百分比堆積條形圖 xlBarStacked100 593D百分比堆積條形圖一 xl3DBarStacked100 62 折線圖 折線圖 xlLine 4數(shù)據(jù)點折線圖 xlLineMarkers

16、 65堆積折線圖 xlLineStacked 63堆積數(shù)據(jù)點折線圖xlLineMarkersStacked 66百百比堆積折線圖xlLineStacked100 64百百比堆積數(shù)據(jù)點折線圖 xlLineMarkersstacked100 673D折線圖一xl3DLine 4101 餅圖 餅圖xlPie 5百離型餅圖 xlPieExploded 693D 餅圖一xl3DPie 4102分離型 3D餅圖一xl3DPieExploded 70復(fù)合餅圖 xlPieOfPie 68復(fù)合條餅圖 xlBarOfPie 71 XY( 散點 ) 圖 散點圖 xlXYScatter 4169平滑折散點圖 xlXY

17、ScatterSmooth 72無數(shù)據(jù)點平滑折散點圖 xlXYScatterSmoothNoMarkers 73折折散點圖 xlXYScatterLines 74無數(shù)據(jù)點折折散點圖 xlXYScatterLinesNoMarkers 75 氣泡圖 氣泡圖 xlBubble 153D氣泡圖一xlBubble3DEffect 87 面積圖 面積圖 xlArea 13D面積圖一xl3DArea 4098堆積面積圖 xlAreaStacked 763D堆積面積圖一xl3DAreaStacked 78百分比堆積面積圖 xlAreaStacked100 773D 百分比堆積面積圖 一xl3DAreaSta

18、cked100 79 圓環(huán)圖 圓環(huán)圖 xlDoughnut -4120分離型圓環(huán)圖 xlDoughnutExploded 80 雷達(dá)圖 雷達(dá)圖 xlRadar -4151數(shù)據(jù)點雷達(dá)圖 xlRadarMarkers 81填充雷達(dá)圖 xlRadarFilled 82 曲面圖 3D 曲面圖 xlSurface 83曲面圖 ( 俯視 ) xlSurfaceTopView 853D 曲面圖(框架圖)xlSurfaceWireframe 84曲面圖 ( 俯視框架圖 ) xlSurfaceWireframeTopView 86 股價圖 盤高 - 盤低 - 收盤圖 xlStockHLC 88成交量 -盤高 -

19、盤低 - 收盤圖 xlStockVHLC 90開盤 - 盤高 - 盤低 - 收盤圖 xlStockOHLC 89成交量 -開盤 -盤高 -盤低 - 收盤圖 xlStockVOHLC 91 柱形圓柱圖xlCylinderColClustered 92條形圓柱圖 xlCylinderBarClustered 95堆積柱形圓柱圖 xlCylinderColStacked 93堆積條形圓柱圖 xlCylinderBarStacked 96百分比堆積柱形圓柱圖 xlCylinderColStacked100 94百分比堆積條形圓柱圖 xlCylinderBarStacked100 973D柱形圓柱圖一x

20、lCylinderCol 98 圓錐圖 柱形圓錐圖 xlConeColClustered 99條形圓錐圖 xlConeBarClustered 102堆積柱形圓錐圖 xlConeColStacked 100堆積條形圓錐圖 xlConeBarStacked 103百分比堆積柱形圓錐圖 xlConeColStacked100 101百分比堆積條形圓錐圖 xlConeBarStacked100 1043D 柱形圓錐圖一xlConeCol 105 棱錐圖 柱形 TOC o 1-5 h z 棱錐圖 xlPyramidColClustered 106條形棱錐圖 xlPyramidBarClustered

21、109堆積柱形棱錐圖 xlPyramidColStacked 107堆積條形棱錐圖 xlPyramidBarStacked 110百分比堆積柱形棱錐圖 xlPyramidColStacked100 108百分比堆積條形棱錐圖 xlPyramidBarStacked100 1113D柱形棱錐圖一xlPyramidCol 112利用以上參數(shù),可用VBA寫出批量產(chǎn)生Excel圖表的程序。代碼如下Private Sub cmdCompareSales_Click()Dim iRows, iChartType, iChartTypeRows As IntegerDim iTemp As IntegerD

22、im sChartTitle, sCategoryTitle, sValueTitle As StringDim sChartName As StringDim lArrayChartType(73) As Long, sArrayChartConst(73) As String,sArrayChartExplain(73) As StringFor iTemp = 0 To 72lArrayChartType(iTemp) = Sheets(Sheet2).Cells(iTemp + 1, 1).ValuesArrayChartConst(iTemp) = Sheets(Sheet2).Ce

23、lls(iTemp + 1,3).ValuesArrayChartExplain(iTemp) = Sheets(Sheet2).Cells(iTemp + 1,2).ValueNext iTempSheets(Sheet1).ActivatesChartTitle = 銷售量比較圖sCategoryTitle = Category標(biāo)題sValueTitle = Value 標(biāo)題 iRows = Sheets(sheet1).UsedRange.Rows.CountOn Error Resume NextSheets(sheet1).ChartObjects.DeleteFor iChartT

24、ype = 0 To 72 Step 1Charts.AddActiveChart.ChartType = lArrayChartType(iChartType)ActiveChart.SetSourceData Source:=Sheets(Sheet1).Range(A2:M &CStr(iRows), PlotBy:=xlRowsActiveChart.Location where:=xlLocationAutomatic, Name:=Sheet1With ActiveChart.HasTitle = True.ChartTitle.Characters.Text = sChartTi

25、tle &sArrayChartConst(iChartType) & sArrayChartExplain(iChartType).ChartTitle.Characters.Text = sChartTitle & xl3DArea.Axes(xlCategory, xlPrimary).HasTitle = False .Axes(xlCategory, xlPrimary).AxisTitle.Text = sCategoryTitle.Axes(xlValue, xlPrimary).HasTitle = False .Axes(xlValue, xlPrimary).AxisTit

26、le.Text = sValueTitleEnd WithsChartName = Mid(ActiveChart.Name, 8, 6)ActiveSheet.Shapes(sChartName).Left = Range(B & Str(18 *(iChartType + 1).LeftActiveSheet.Shapes(sChartName).Top = Range(B & Str(18 *(iChartType + 1).TopActiveChart.Export ThisWorkbook.Path & & Format(Now(),yymmddhhmm) & sArrayChart

27、Const(iChartType) & .gif, gifSheets(sheet1).ChartObjects(sChartName).DeleteNext iChartTypeEnd Sub注意樓上的參數(shù)存于 Sheet2 的 1 至 3 列中。VBA批量調(diào)整excel圖表格式-線條粗細(xì)Excel 畫圖時默認(rèn)的線條和標(biāo)記比較大,寫論文時使用起來經(jīng)常要把線條和標(biāo)記調(diào)小才好看。如果圖表比較多,圖里的系列也比較多的話,一條一條的設(shè)置起來會很麻煩,這里給出了一個宏,使用方法是選中圖表后運行宏即可。Sub zoom() zoom 宏 ActiveSheet.ChartObjects( 圖表 1).A

28、ctivate 1 可以改為循環(huán)整數(shù)Dimi As IntegerFor i = 1 To ActiveChart.SeriesCollection.CountActiveChart.SeriesCollection(i).SelectSelection.MarkerSize = 3 設(shè)置標(biāo)記大小為 3With Selection.Format.Line.Visible = msoTrue.Weight = 1.25 設(shè)置線條粗細(xì)為 1.25End WithNextEnd Sub可以根據(jù)自己的需求更改標(biāo)記的大小和線條的粗細(xì)。當(dāng)然如果需要對所有圖表做這種更改,可以找出圖表個數(shù),對ActiveSh

29、eet.ChartObjects( 圖表 i).Activate 進(jìn)行外圍循環(huán)即可。Shape(圖形)、Chart(圖表)對象在工作表中添加圖形如果需要在工作表中添#001 Sub AddShape()加圖形對象,可以使用 AddShape方法,如下面的代碼所示#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shapes(myShape).Delete #005 Set myShape =Sheet1.Shapes.AddShape(msoShapeRectangle, 40, 120, 280,30)#006 Wit

30、h myShape#007 .Name = myShape#008 With .TextFrame.Characters #009 .Text = 單擊將選擇Sheet2!#010 With .Font#011 .Name = 華文行楷 #012 .FontStyle = 常規(guī) #013 .Size = 22#014 .ColorIndex = 7 #015 End With#016 End With#017 With .TextFrame#018 .HorizontalAlignment = -4108 #019 .VerticalAlignment = -4108#020 End With

31、#021 .Placement = 3#022 End With#023 myShape.Select#024 With Selection.ShapeRange #025 With .Line#026 .Weight = 1#027 .DashStyle = msoLineSolid#028 .Style = msoLineSingle #029 .Transparency = 0#030 .Visible = msoTrue #031 .ForeColor.SchemeColor = 40#032 .BackColor.RGB = RGB(255, 255, 255) #033 End W

32、ith#034 With .Fill#035 .Transparency = 0#036 .Visible = msoTrue #037 .ForeColor.SchemeColor = 41#038 .OneColorGradient 1, 4, 0.23 #039 End With#040 End With#041 Sheet1.Range(A1).Select#042 Sheet1.Hyperlinks.Add Anchor:=myShape, Address:=, _#043 SubAddress:=Sheet2!A1, ScreenTip:= 選擇 Sheet2! #044 Setm

33、yShape = Nothing#045 End Sub代碼解析 :AddShapeM程在工作表中添加一個矩形并設(shè)置其外觀等屬性。第2行代碼聲明變量myShapefl勺對象類型。第3、4行代碼刪除可能存在的名稱為“ myShape的圖形對象。第5行代碼使用AddShape方法在工作表中添加一個矩形。當(dāng)該方法應(yīng)用于Shapes對象時,返回一個Shape 對象,該對象代表工作表中的新自選圖形,語法如下expression.AddShape(Type, Left, Top, Width, Height)參數(shù) expression 是必需的,返回一個Shapes對象。參數(shù) Type 是必需的,指定要創(chuàng)

34、建的自選圖形的類型。參數(shù)Left和Top是必需的,以磅為單位給出自選圖形邊框左上角的位置。參數(shù) Width 和 Height 是必需的,以磅為單位給出自選圖形邊框的寬度和高度。 第 7行代碼將新建圖形命名為“ myShape ,向Shapes集合添加新的圖形時,將對新添加的圖形賦以默認(rèn)的名稱,若要為圖形指定更有意義的名稱,可指定其Name1性。第8行到第16行代碼為矩形添加文字,并設(shè)定其格式。其中第 8 行代碼使用 TextFrame 屬性和 Characters 方法返回該矩形的字符區(qū)域。應(yīng)用于Shape對象的TextFrame屬性返回一個TextFrame對象,該對象包含指定圖形對象的對齊

35、和定位屬性;Characters 方法返回一個Characters 對象,該對象代表某個圖形的文本框中的字符區(qū)域,語法如下 :expression.Characters(Start, Length)參數(shù) expression 是必需的,返回一個指定文本框內(nèi) Characters 對象的表達(dá)式。參數(shù) Start 是可選的,表示將要返回的第一個字符,如果此參數(shù)設(shè)置為 1 或被忽略,則 Characters 方法會返回以第一個字符為起始字符的字符區(qū)域。參數(shù) Length 是可選的,表示要返回的字符個數(shù)。如果此參數(shù)被忽略,則Characters 方法會返回該字符串的剩余部分( 由 Start 參數(shù)指定

36、的字符以后的所有字符 ) 。第 9 行代碼為矩形添加文字,應(yīng)用于Characters 對象的 Text 屬性返回或設(shè)置對象的文本,為可讀寫的 String 類型。第 10 行到第 15 行代碼設(shè)置矩形中文字的屬性,應(yīng)用于Characters 對象 Font屬性返回一個Font 對象,該對象代表指定對象的字體屬性(字體名稱、字體大小、字體顏色等) ,第 11 行代碼設(shè)置字體名稱,第 12 行代碼設(shè)置字體樣式,第 13 行代碼設(shè)置字體大小,第 14 行代碼顏色。第 17 行到第 20 行代碼設(shè)定矩形中文字的對齊方式。應(yīng)用于 TextFrame 對象的HorizontalAlignment 屬性返回

37、或設(shè)置指定對象的水平對齊方式,可為表格1-1 所示的 XlHAlign 常量之一。常量 值 描述居中 xlHAlignCenter -4108靠左 xlHAlignCenterAcrossSelection 7分散對齊xlHAlignDistributed -4117分散對齊 xlHAlignFill 5靠左 xlHAlignGeneral 1兩端對齊xlHAlignJustify -4130靠左 xlHAlignLeft -4131靠右 xlHAlignRight -4152表格 1-1 HorizontalAlignment 屬性的 XlHAlign 常量應(yīng)用于 TextFrame 對象的

38、 VerticalAlignment 屬性返回或設(shè)置指定對象的垂直對齊方式,可為表格 1-2 所示的 XlHAlign 常量之一。常量 值 描述居中 xlVAlignCenter -4108兩端對齊xlVAlignJustify -4130靠下 xlVAlignBottom -4107分散對齊xlVAlignDistributed -4117靠上 xlVAlignTop -4160表格 1-2 VerticalAlignment 屬性的 XlHAlign 常量Placement 屬性返回或設(shè)置對象與所在的單元格之間的附屬關(guān)系,可為表格1-3 所示的 XlPlacement 常量之一。常量 值

39、描述大小、位置均固定xlFreeFloating 3大小固定、位置隨單元格而變xlMove 2大小、位置隨單元格而變xlMoveAndSize 1表格 1-3 XlPlacement 常量第24行到第32行代碼設(shè)置矩形的邊框線條格式,應(yīng)用于ShapeRangeft合的Line 屬性返回一個LineFormat 對象,該對象包含指定圖形的線條格式屬性。虛線樣式,第 28 行其中第 26 行代碼設(shè)置矩形線條粗細(xì),第 27 行代碼設(shè)置矩形線條的代碼設(shè)置矩形填充的透明度,第 29 行代碼設(shè)置矩形為可見,第 30 行代碼設(shè)置矩形的前景色,第 31 行代碼設(shè)置矩形填充背景的顏色。第33行到第38行代碼設(shè)置

40、矩形的內(nèi)部填充格式,應(yīng)用于ShapeRangeft合的Fill 屬性返回 FillFormat 對象,該對象包含指定的圖表或圖形的填充格式屬性。其中第 35 行代碼設(shè)置矩形內(nèi)部的透明度,第36 行代碼設(shè)置矩形內(nèi)部為可見,第 37 行代碼設(shè)置矩形內(nèi)部的前景色,第 38 行代碼將矩形內(nèi)部指定填充設(shè)為單色漸變,應(yīng)用于 FillFormat 對象的 OneColorGradient 方法將指定填充設(shè)為單色漸變,語法如下 :expression.OneColorGradient(Style, Variant, Degree)其中參數(shù) Style 是必需的,底紋樣式,可為表格 1-1 所示的MsoGrad

41、ientStyle 常量之一。常量 值 描述斜下 msoGradientDiagonalDown 4斜上 msoGradientDiagonalUp 3無 msoGradientFromCenter 7角部幅射msoGradientFromCorner 5中心幅射msoGradientFromTitle 6水平 msoGradientHorizontal 1無 msoGradientMixed -2垂直msoGradientVertical 2表格1-4 MsoGradientStyle常量參數(shù) Variant 是必需的,漸變變量。取值范圍為 1 到 4 之間,分別與“填充效果”對話框中“漸變

42、”選項卡的四個漸變變量相對應(yīng)。如果GradientStyle 設(shè)為 msoGradientFromCenter ,則 Variant 參數(shù)只能設(shè)為 1 或 2 。參數(shù) Degree 是必需的,灰度。取值范圍為 0.0( 表示最深 ) 到 1.0( 表示最淺 )之間。第 42、 43 行代碼為矩形對象添加超鏈接,應(yīng)用于 Hyperlinks 對象的 Add方法向指定的區(qū)域或圖形添加超鏈接,語法如下 :expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)參數(shù) expression 是必需的,返回一個Hyperli

43、nks 對象。參數(shù)Anchor是必需的,超鏈接的位置??蔀?Range對象或Shape對象。參數(shù) Address 是必需的,超鏈接的地址。參數(shù) SubAddress 是必需的,超鏈接的子地址。參數(shù) ScreenTip 是可選的,當(dāng)鼠標(biāo)指針停留在超鏈接上時所顯示的屏幕提示。參數(shù) TextToDisplay 是可選的,要顯示的超鏈接的文本。運行AddShape過程結(jié)果如圖1-1所示技巧1導(dǎo)出工作表中的圖片有時需要將工作表中的圖形對象保存為單獨的圖像文件,可以使用Export方法將工作表中的圖片以文件形式導(dǎo)出,如下面的代碼所示。001 Sub ExportShp()002 Dim Shp As Sh

44、ape003 Dim FileName As String#004 For Each Shp In Sheet1.Shapes #005 If Shp.Type = msoPictureThen #006 FileName = ThisWorkbook.Path & & Shp.Name & .gif#007 Shp.Copy#008 With Sheet1.ChartObjects.Add(0, 0, Shp.Width + 28, Shp.Height+ 30).Chart#009 .Paste#010 .Export FileName, gif #011 .Parent.Delete #

45、012 End With#013 End If#014 Next代碼解析 :ExportShp 過程將 Sheet1 工作表的所有圖片以文件形式導(dǎo)出到同一目錄中。第 4 行代碼使用For Each.Next語句遍歷 Sheet1 工作表中的所有圖形。 第 5行代碼判斷圖形的類型是否為圖片,應(yīng)用于Shape對象的Type屬性返回或設(shè)置圖形類型,可以為表格1-1所示的MsoShapeTyp呢量之一。常量 值 說明混合型圖形msoShapeTypeMixed -2自選圖形 msoAutoShape 1沒有邊框線的標(biāo)注msoCallout 2圖表 msoChart 3批注 msoComment 4任意

46、多邊形msoFreeform 5圖形組合msoGroup 6窗體控件msoFormControl 8線條 msoLine 9鏈接式或內(nèi)嵌OLEX寸象msoLinkedOLEObject 10剪貼畫或圖片 msoLinkedPicture 11ActiveX 控件 msoOLEControlObject 12圖片 msoPicture 13藝術(shù)字msoTextEffect 15文本框msoTextBox 17組織結(jié)構(gòu)圖或其他圖示 msoDiagram 21表格 1-1 MsoShapeType 常量第 6 行代碼使用字符串變量FileName 記錄需導(dǎo)出圖形的路徑和名稱。第7行代碼復(fù)制圖形,應(yīng)用

47、于Shape對象的Copy方法將對象復(fù)制到剪貼板。第8行代碼使用Add方法在工作表中添加一個圖表,應(yīng)用于 ChartObjects對象的 Add 方法創(chuàng)建新的嵌入圖表,語法如下 :expression.Add(Left, Top, Width, Height)參數(shù) expression 是必需的,返回一個ChartObjects 對象。參數(shù)Left、參數(shù)Top是必需的,以磅為單位給出新對象的初始坐標(biāo),該坐標(biāo)是相對于工作表上單元格 A1 的左上角或圖表的左上角的坐標(biāo)。參數(shù) Width 、參數(shù) Height 是必需的,以磅為單位給出新對象的初始大小。第 9 行代碼使用 Paste 方法將圖形粘貼到

48、新的嵌入圖表中,應(yīng)用于Chart 對象的 Paste 方法將剪貼板中的圖表數(shù)據(jù)粘貼到指定的圖表中,語法如下 :expression.Paste(Type)參數(shù) expression 是必需的,返回一個Chart 對象。參數(shù) Type 是可選的的,如果剪貼板中有圖表,本參數(shù)指定要粘貼的圖表信息。可為以下 XlPasteType 常量之一 :xlFormats 、 xlFormulas 或 xlAll 。默認(rèn)值為 xlAll ,如果剪貼板中是數(shù)據(jù)不是圖表,則不能使用本參數(shù)。第 10 行代碼使用 Export 方法將圖表導(dǎo)出到同一目錄中,應(yīng)用于Chart 對象的Export 方法以圖形格式導(dǎo)出圖表,

49、語法如下:expression.Export(Filename, FilterName, Interactive)其中參數(shù) Filename 是必需的,被導(dǎo)出的文件的名稱。第 10 行代碼刪除新建的圖表。因為 Chart 對象是不能使用 Delete 方法直接刪除的,應(yīng)先使用 Parent 屬性返回指定對象的父對象,然后使用 Delete 方法刪除。技巧 2 在工作表中添加藝術(shù)字在工作表中插入藝術(shù)字,可以使用 AddTextEffect 方法,如下面的代碼所示。#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shape

50、s(myShape).Delete #005 Set myShape =Sheet1.Shapes.AddTextEffect _ #006 (PresetTextEffect:=msoTextEffect15, _#007 Text:= 我愛 Excel Home, FontName:= 宋體 , FontSize:=36, _ #008FontBold:=msoFalse, FontItalic:=msoFalse, _#009 Left:=100, Top:=100) #010 With myShape011 .Name = myShape012 With .Fill013 .Solid

51、014 .ForeColor.SchemeColor = 55 #015 .Transparency = 0016 End With017 With .Line018 .Weight = 1.5019 .DashStyle = msoLineSolid #020 .Style = msoLineSingle#021 .Transparency = 0#022 .ForeColor.SchemeColor = 12 #023 .BackColor.RGB = RGB(255, 255,255) #024 End With025 End With026 Set myShape = Nothing0

52、27 End Sub代碼解析 :TextEffect 過程在工作表中插入藝術(shù)字并設(shè)置其格式。第 3、 4 行代碼刪除工作表中可能存在的藝術(shù)字,以免重復(fù)添加。第5行到第9行代碼使用AddTextEffect方法在工作表中插入藝術(shù)子,AddTextEffect方法創(chuàng)建藝術(shù)字對象。返回一個Shape對象,該對象代表新建的藝術(shù)字對象,語法如下:expression.AddTextEffect(PresetTextEffect, Text, FontName, FontSize,FontBold, Fontltalic, Left, Top)參數(shù)expression是必需的,返回一個Shapes對象。參

53、數(shù)PresetTextEffect是必需的,藝術(shù)字預(yù)置文本效果,可為MsoPresetTextEffect 常量之一,等同于在工作表中插入藝術(shù)字時的樣式選項卡, 如圖2-1所示。名木字甘11 M 圖2-1藝術(shù)字樣式參數(shù)Text是必需的,藝術(shù)字對象中的文字。參數(shù)FontName是必需的,藝術(shù)字對象中所用的字體名稱。參數(shù)FontSize是必需的,以磅為單位給出藝術(shù)字對象中所用的字體大小參數(shù)FontBold是必需的,在藝術(shù)字中要加粗的字體。參數(shù)FontItalic是必需的,在藝術(shù)字中要傾斜的字體參數(shù)Left和參數(shù)Top是必需的,相對于文檔的左上角、頂部,以磅為單位給出藝術(shù)字對象邊框左上角的位置。第1

54、1行代碼將藝術(shù)字對象重命名為“ myShape。第12行到第16行代碼設(shè)置藝術(shù)字對象的填充格式。其中第 13行代碼將填充格式設(shè)置為均一的顏色,應(yīng)用于 FillFormat 對象的Solid方法將指定的填充格式 設(shè)置為均一的顏色,可用本方法將帶有漸進(jìn)色、紋理、圖案或背景的填充格式轉(zhuǎn)換 為單色的填充格式。第14行代碼設(shè)置填充的顏色。第15行代碼設(shè)置填充的透明 度。第17行到第24行代碼設(shè)置藝術(shù)字對象的線條格式屬性。其中第 18行代碼設(shè) 置線條粗細(xì),第19行代碼設(shè)置線條虛線樣式,第20行代碼設(shè)置線條區(qū)域的樣式, 第21行代碼設(shè)置線條的透明度,第22行代碼設(shè)置前景色,第23行代碼設(shè)置填充 背景的顏色。

55、技巧3遍歷工作表中的圖形工作表中的多個圖形,如果使用系統(tǒng)缺省名稱,如“文本框1”、“文本框2”這樣前面是固定的字符串,后面是序號的,可以使用ForNext 語句遍歷圖形,如下面的代碼所示。#002 Dim i As Integer#003 For i = 1 To 4#004 Sheet1.Shapes( 文本框 & i).TextFrame.Characters.Text = #005 Next#006 End Sub代碼解析 :ErgShapes_1 過程清除工作表中四個圖形文本框中的文字。第 3 行到第 5 行代碼,使用 Shapes 屬性在工作表上的三個圖形文本框中循環(huán)。Shapes屬

56、性返回Shapes對象,代表工作表或圖形工作表上的所有圖形,可以使用Shapes(index)返回單個的Shape對象,其中index是圖形的名稱或索引號。返回單個的Shape對象后使用TextFrame屬性和Characters方法清除文本框中的字符,關(guān)于 Shape對象的TextFrame屬性和Characters方法請參閱0。如果圖形的名稱沒有規(guī)律,可以使用 For Each.Next語句循環(huán)遍歷所有圖形,根據(jù) Type 屬性返回的圖形類型進(jìn)行相應(yīng)的操作,如下面的代碼所示。#001 Sub ErgShapes_2()002 Dim myShape As Shape003 Dim i As

57、 Integer004 i = 1005 For Each myShape In Sheet1.Shapes006 If myShape.Type = msoTextBox Then這是第 & i & 個文本框 007 myShape.TextFrame.Characters.Text =009 End If010 Next011 End Sub代碼解析:ErgShapes_2過程在工作表中的所有圖形文本框中寫入文本。第5行代碼使用For EachNext語句循環(huán)遍歷工作表中所有的圖形對象。第6行到第9行代碼如果圖形對象是文本框則在文本框中寫入文本。其中第 6行代碼根據(jù)Type屬性判斷圖形對象

58、是否為文本框,應(yīng)用于 Shape對象的Type屬性 返回或設(shè)置圖形類型,MsoShapeTyp糜型,請參閱表格1-1 。第7行代碼根據(jù)返回的Type屬性值在所有的文本框內(nèi)寫入相應(yīng)的文本,如圖3-1所小。圖3-1遍歷所有的文本框技巧4移動、旋轉(zhuǎn)圖片工作表中的圖片可以移動、旋轉(zhuǎn),如下面的代碼所示001 Sub MoveShape()002 Dim i As Long003 Dim j As Long004 With Sheet1.Shapes(1)005 For i = 1 To 3000 Step 5006 .Top = Sin(i * (3.1416 / 180) * 100 + 100007

59、 .Left = Cos(i * (3.1416 / 180) * 100 + 100008 .Fill.ForeColor.RGB = i * 100009 For j = 1 To 10010 .IncrementRotation -2011 DoEvents012 Next013 Next014 End With015 End Sub代碼解析 :MoveShap時程移動、旋轉(zhuǎn)工作表中的圖片并不斷改變其填充的前景色。第6行代碼設(shè)置圖片的Top屬性值,應(yīng)用于Shape對象的Top屬性設(shè)置圖形的頂端到工作表頂端的距離。在循環(huán)的過程中使用Sin函數(shù)將Top屬性值設(shè)置為一個圓形的弧度值。 Sin

60、函數(shù)返回指定參數(shù)的正弦值,語法如下 :Sin(number)參數(shù)number表示一個以弧度為單位的角。Sin 函數(shù)取一角度為參數(shù)值,并返回角的對邊長度除以斜邊長度的比值,將角度除以 180 后即能角度轉(zhuǎn)換為弧度。第7行代碼設(shè)置圖片的Left屬性值,應(yīng)用于Shape對象的Left屬性設(shè)置圖形從左邊界至A 列左邊界 ( 在工作表中 ) 或圖表區(qū)左邊界( 在圖表工作表中 ) 的距離。在循環(huán)的過程中使用Cos函數(shù)將Left屬性值設(shè)置為一個圓形的弧度值。Cos函數(shù)返回指定一個角的余弦值,語法如下 :Cos(number)參數(shù)number表示一個以弧度為單位的角。Cos函數(shù)的number參數(shù)為一個角,并返

溫馨提示

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

評論

0/150

提交評論