Excel-VBA常用技巧-第04章.shape(圖形)、Chart(圖表)對象_第1頁
Excel-VBA常用技巧-第04章.shape(圖形)、Chart(圖表)對象_第2頁
Excel-VBA常用技巧-第04章.shape(圖形)、Chart(圖表)對象_第3頁
已閱讀5頁,還剩23頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

VBA常用技巧代碼解析VBA常用技巧代碼解析PAGEPAGE5VBA常用技巧目錄VBA常用技巧 1第4章 Shape(圖形Chart(圖表)對象 2技巧1 在工作表中添加圖形 2技巧2 導(dǎo)出工作表中的圖片 7技巧3 在工作表中添加藝術(shù)字 9技巧4 遍歷工作表中的圖形 11技巧5 移動(dòng)、旋轉(zhuǎn)圖片 13技巧6 工作表中自動(dòng)插入圖片 14技巧7 固定工作表中圖形的位置 17技巧8 使用VBA自動(dòng)生成圖表 19技巧9 使用獨(dú)立窗口顯示圖表 23技巧10 導(dǎo)出工作表中的圖表 24技巧11 多圖表制作 25第4章 Shape(圖形、Chart(圖表)對象技巧1在工作表中添加圖形如果需要在工作表中添加圖形對象,可以使用AddShape方法,如下面的代碼所示。#001#002#003SubAddShape()DimmyShapeAsShapeOnErrorResumeNext#004Sheet1.Shapes("myShape").Delete#00530)=Sheet1.Shapes.AddShape(msoShapeRectangle,40,120,280,#006WithmyShape#007.Name="myShape"#008With.TextFrame.Characters#009.TextSheet2!"#010With.Font#011.Name行楷"#012.FontStyle#013.Size=22#014.ColorIndex=7#015EndWith#016EndWith#017With.TextFrame#018.HorizontalAlignment=-4108#019.VerticalAlignment=-4108#020EndWith#021.Placement=3#022#023#024EndWithmyShape.SelectWithSelection.ShapeRange#025With.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)#033EndWith#034With.Fill#035.Transparency=0#036.Visible=msoTrue#037.ForeColor.SchemeColor=41#038.OneColorGradient1,4,0.23#039EndWith#040EndWith#041Sheet1.Range("A1").Select#042Sheet1.Hyperlinks.AddAnchor:=myShape,Address:="",_#043SubAddress:="Sheet2!A1"#043SubAddress:="Sheet2!A1""Sheet2!"#044SetmyShape=Nothing#045EndSubAddShape過程在工作表中添加一個(gè)矩形并設(shè)置其外觀等屬性。第2行代碼聲明變量myShape的對象類型。第3、4行代碼刪除可能存在的名稱為“myShape”的圖形對象。5AddShapeShapes對象時(shí),返回一個(gè)Shape對象,該對象代表工作表中的新自選圖形,語法如下:expression.AddShape(Type,Left,Top,Width,Height)expression.AddShape(Type,Left,Top,Width,Height)參數(shù)expression是必需的,返回一個(gè)Shapes對象。參數(shù)Type是必需的,指定要?jiǎng)?chuàng)建的自選圖形的類型。參數(shù)Left和Top是必需的,以磅為單位給出自選圖形邊框左上角的位置。參數(shù)Width和Height是必需的,以磅為單位給出自選圖形邊框的寬度和高度。第7myShapShapes添加的圖形賦以默認(rèn)的名稱,若要為圖形指定更有意義的名稱,可指定其Name屬性。第8行到第16行代碼為矩形添加文字,并設(shè)定其格式。expression.Characters(Start,Length)8行代碼使用TextFrame屬性和CharactersShapeTextFrame對齊和定位屬性;Characters方法返回一個(gè)Characters框中的字符區(qū)域,語法如下:expression.Characters(Start,Length)參數(shù)expression是必需的,返回一個(gè)指定文本框內(nèi)Characters對象的表達(dá)式。參數(shù)Start是可選的,表示將要返回的第一個(gè)字符,如果此參數(shù)設(shè)置為1或被忽略,則Characters方法會返回以第一個(gè)字符為起始字符的字符區(qū)域。LengthCharacters法會返回該字符串的剩余部分(由Start參數(shù)指定的字符以后的所有字符。9Characters本,為可讀寫的String類型。1015行代碼設(shè)置矩形中文字的屬性,應(yīng)用于CharactersFont屬性返回一個(gè)Font對象,該對象代表指定對象的字體屬性(字體名稱、字體大小、字體顏色等11121314行代碼顏色。第17行到第20行代碼設(shè)定矩形中文字的對齊方式。應(yīng)用于TextFrameHorizontalAlignment屬性返回或設(shè)置指定對象的水平對齊方式,可為表格1-1XlHAlign常量之一。常量值描述xlHAlignCenter-4108居中xlHAlignCenterAcrossSelection7靠左xlHAlignDistributed-4117分散對齊xlHAlignFill5分散對齊xlHAlignGeneral1靠左xlHAlignJustify-4130兩端對齊xlHAlignLeft-4131靠左xlHAlignRight-4152靠右表格1-1HorizontalAlignment屬性的XlHAlign常量應(yīng)用于TextFrame對象的VerticalAlignment1-2所示的XlHAlign常量之一。常量值描述xlVAlignCenter-4108居中xlVAlignJustify-4130兩端對齊xlVAlignBottom-4107靠下xlVAlignDistributed-4117分散對齊xlVAlignTop-4160靠上表格1-2VerticalAlignment屬性的XlHAlign常量21ShapePlacement1-3所示的XlPlacement常量之一。常量常量值描述xlFreeFloating3大小、位置均固定xlMove2大小固定、位置隨單元格而變xlMoveAndSize1大小、位置隨單元格而變表格1-3XlPlacement常量2432ShapeRange集合的Line性返回一個(gè)LineFormat對象,該對象包含指定圖形的線條格式屬性。262728行293031行代碼設(shè)置矩形填充背景的顏色。3338行代碼設(shè)置矩形的內(nèi)部填充格式,應(yīng)用于ShapeRangeFill性返回FillFormat對象,該對象包含指定的圖表或圖形的填充格式屬性。expression.OneColorGradient(Style,Variant,Degree)353637代碼設(shè)置矩形內(nèi)部的前景色,第38行代碼將矩形內(nèi)部指定填充設(shè)為單色漸變,應(yīng)用于FillFormat對象的OneColorGradient方法將指定填充設(shè)為單色漸變,語法如下:expression.OneColorGradient(Style,Variant,Degree)Style2-1MsoGradientStyle一。常量常量值描述msoGradientDiagonalDown4斜下msoGradientDiagonalUp3斜上VBA常用技巧代碼解析msoGradientFromCenter7無msoGradientFromCorner5角部幅射msoGradientFromTitle6中心幅射msoGradientHorizontal1水平msoGradientMixed-2無msoGradientVertical2垂直表格1-4MsoGradientStyle常量Variant1到4”“”GradientStyle,則Variant12。參數(shù)Degree是必需的,灰度。取值范圍為0.0(表示最深)到1.0(表示最淺)之間。第42、43行代碼為矩形對象添加超鏈接,應(yīng)用于Hyperlinks對象的Add方法向指定的區(qū)域或圖形添加超鏈接,語法如下:expression.Add(Anchor,Address,SubAddress,ScreenTip,TextToDisplay)參數(shù)expression是必需的,返回一個(gè)Hyperlinks對象。參數(shù)Anchor是必需的,超鏈接的位置??蔀镽ange對象或Shape參數(shù)Address是必需的,超鏈接的地址。參數(shù)SubAddress是必需的,超鏈接的子地址。參數(shù)ScreenTip是可選的,要顯示的超鏈接的文本。運(yùn)行AddShape過程結(jié)果如圖1-1所示。圖1-1 在工作表中添加圖形6VBA常用技巧代碼解析VBA常用技巧代碼解析PAGEPAGE9技巧2導(dǎo)出工作表中的圖片#001SubExportShp()#002DimShpAsShape#003#001SubExportShp()#002DimShpAsShape#003DimFileNameAsString#004ForEachShpInSheet1.Shapes#005IfShp.Type=msoPictureThen#006FileName=ThisWorkbook.Path&"\"&Shp.Name&".gif"#007Shp.Copy#008+30).Chart,,h+,#009.Paste#010.ExportFileName,"gif"#011.Parent.Delete#012EndWith#013EndIf#014Next#015EndSub代碼解析:ExportShp過程將Sheet1工作表的所有圖片以文件形式導(dǎo)出到同一目錄中。第4行代碼使用ForEach...Next語句遍歷Sheet1工作表中的所有圖形。第5行代碼判斷圖形的類型是否為圖片,應(yīng)用于Shape對象的Type屬性返回或設(shè)置圖形類型,可以為表格2-1所示的MsoShapeType常量之一。常量值說明msoShapeTypeMixed-2混合型圖形msoAutoShape1自選圖形msoCallout2沒有邊框線的標(biāo)注msoChart3圖表msoComment4批注msoFreeform5任意多邊形msoGroup6圖形組合msoFormControl8窗體控件msoLine9線條msoLinkedOLEObject10OLE對象msoLinkedPicture11剪貼畫或圖片msoOLEControlObject12ActiveX控件msoPicture13圖片msoTextEffect15藝術(shù)字msoTextBox17文本框msoDiagram21組織結(jié)構(gòu)圖或其他圖示表格2-1MsoShapeType常量第6行代碼使用字符串變量FileName記錄需導(dǎo)出圖形的路徑和名稱。第7行代碼復(fù)制圖形,應(yīng)用于Shape對象的Copy方法將對象復(fù)制到剪貼板。8行代碼使用Add方法在工作表中添加一個(gè)圖表,應(yīng)用于ChartObjects對象的Add方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left,Top,Width,Height)expression.Add(Left,Top,Width,Height)參數(shù)expression是必需的,返回一個(gè)ChartObjects對象。參數(shù)Top作表上單元格A1的左上角或圖表的左上角的坐標(biāo)。參數(shù)Width、參數(shù)Height是必需的,以磅為單位給出新對象的初始大小。第9行代碼使用Paste方法將圖形粘貼到新的嵌入圖表中,應(yīng)用于Chart對象的Paste方法將剪貼板中的圖表數(shù)據(jù)粘貼到指定的圖表中,語法如下:expression.Paste(Type)expression.Paste(Type)參數(shù)expression是必需的,返回一個(gè)Chart對象。參數(shù)TypeXlPasteTypexlFormulasxlAll。默認(rèn)值為xlAll,如果剪貼板中是數(shù)據(jù)不是圖表,則不能使用本參數(shù)。第10行代碼使用Export方法將圖表導(dǎo)出到同一目錄中,應(yīng)用于Chart對象的Export方法以圖形格式導(dǎo)出圖表,語法如下:expression.Export(Filename,FilterName,Interactive)expression.Export(Filename,FilterName,Interactive)其中參數(shù)Filename是必需的,被導(dǎo)出的文件的名稱。10Chart對象是不能使用Delete先使用Parent屬性返回指定對象的父對象,然后使用Delete方法刪除。技巧3在工作表中添加藝術(shù)字在工作表中插入藝術(shù)字,可以使用AddTextEffect方法,如下面的代碼所示。#001#002#003SubTextEffect()DimmyShapeAsShapeOnErrorResumeNext#004Sheet1.Shapes("myShape").Delete#005SetmyShape=Sheet1.Shapes.AddTextEffect_#006(PresetTextEffect:=msoTextEffect15,_#007#008愛ExcelHome"宋體FontSize:=36_FontBold:=msoFalse,FontItalic:=msoFalse,_#009Left:=100,Top:=100)#010WithmyShape#011.Name="myShape"#012With.Fill#013.Solid#014.ForeColor.SchemeColor=55#015.Transparency=0#016EndWith#017With.Line#018.Weight=1.5#019.DashStyle=msoLineSolid#020.Style=msoLineSingle#021.Transparency=0#022.ForeColor.SchemeColor=12#023.BackColor.RGB=RGB(255,255,255)#024EndWith#025EndWith#026SetmyShape=Nothing#027EndSub代碼解析:VBA常用技巧代碼解析TextEffect過程在工作表中插入藝術(shù)字并設(shè)置其格式。第3、4行代碼刪除工作表中可能存在的藝術(shù)字,以免重復(fù)添加。59方法創(chuàng)建藝術(shù)字對象。返回一個(gè)Shape對象,該對象代表新建的藝術(shù)字對象,語法如下:expression.AddTextEffect(PresetTextEffect,FontBold,FontItalic,Left,Top)

Text, FontName, FontSize,參數(shù)expression是必需的,返回一個(gè)Shapes對象。參數(shù)PresetTextEffect是必需的,藝術(shù)字預(yù)置文本效果,可為3-1所示。圖3-1 藝術(shù)字樣式參數(shù)Text是必需的,藝術(shù)字對象中的文字。參數(shù)FontName是必需的,藝術(shù)字對象中所用的字體名稱。參數(shù)FontSize參數(shù)FontBold是必需的,在藝術(shù)字中要加粗的字體。參數(shù)FontItalic是必需的,在藝術(shù)字中要傾斜的字體。LeftTop對象邊框左上角的位置。第11myShap121613行代碼將填充格式設(shè)置為均一的顏色,應(yīng)用于FillFormat對象的Solid可用本方法將帶有漸進(jìn)色、紋理、圖案或背景的填充格式轉(zhuǎn)換為單色的填充格式。第14行15行代碼設(shè)置填充的透明度。10VBA常用技巧代碼解析172418細(xì),第19行代碼設(shè)置線條虛線樣式,第20行代碼設(shè)置線條區(qū)域的樣式,第212223行代碼設(shè)置填充背景的顏色。運(yùn)行TextEffect過程工作表中如圖3-2所示。圖3-2 工作表中插入藝術(shù)字技巧4遍歷工作表中的圖形工作表中的多個(gè)圖形,如果使用系統(tǒng)缺省名稱,如“文本框12”這樣前面是固定的字符串,后面是序號的,可以使用For...Next#001SubErgShapes_1()#002DimiAsInteger#003Fori=1To4#004#005"本框&i).TextFrame.Characters.TextNext#006EndSub代碼解析:ErgShapes_1過程清除工作表中四個(gè)圖形文本框中的文字。第3行到第5行代碼,使用Shapes屬性在工作表上的三個(gè)圖形文本框中循環(huán)。Shapes屬性返回Shapes對象,代表工作表或圖形工作表上的所有圖形,可以使用Shapes(index)返回單個(gè)的Shape對象,其中index是圖形的名稱或索引號。11VBA常用技巧代碼解析ShapeTextFrameCharacters符,關(guān)于Shape屬性和Characters1。如果圖形的名稱沒有規(guī)律,可以使用ForEach...Next語句循環(huán)遍歷所有圖形,根據(jù)Type屬性返回的圖形類型進(jìn)行相應(yīng)的操作,如下面的代碼所示。#001#002SubErgShapes_2()DimmyShapeAsShape#003DimiAsInteger#004i=1#005ForEachmyShapeInSheet1.Shapes#006IfmyShape.Type=msoTextBoxThen#007#008myShape.TextFrame.Characters.Text是第&i&個(gè)文本框"i=i+1#009EndIf#010Next#011EndSub代碼解析:ErgShapes_2過程在工作表中的所有圖形文本框中寫入文本。5行代碼使用ForEach...Next語句循環(huán)遍歷工作表中所有的圖形對象。69行代碼如果圖形對象是文本框則在文本框中寫入文本。其中第6行代碼TypeShape對象的Type形類型,MsoShapeType2-1。7行代碼根據(jù)返回的Type屬性值在所有的文本框內(nèi)寫入相應(yīng)的文本4-1所示。圖4-1 遍歷所有的文本框12VBA常用技巧代碼解析VBA常用技巧代碼解析PAGEPAGE14技巧5移動(dòng)、旋轉(zhuǎn)圖片工作表中的圖片可以移動(dòng)、旋轉(zhuǎn),如下面的代碼所示。#001SubMoveShape()#002DimiAsLong#003DimjAsLong#004WithSheet1.Shapes(1)#005Fori=1To3000Step5#006.Top=Sin(i*(3.1416/180))*100+100#007.Left=Cos(i*(3.1416/180))*100+100#008.Fill.ForeColor.RGB=i*100#009Forj=1To10#010.IncrementRotation-2#011DoEvents#012Next#013Next#014EndWith#015EndSub代碼解析:MoveShape過程移動(dòng)、旋轉(zhuǎn)工作表中的圖片并不斷改變其填充的前景色。Sin(number)第6行代碼設(shè)置圖片的Top屬性值,應(yīng)用于Shape對象的Top屬性設(shè)置圖形的頂端到工作表頂端的距離。在循環(huán)的過程中使用Sin函數(shù)將Top屬性值設(shè)置為一個(gè)圓形的弧度值。Sin函數(shù)返回指定參數(shù)的正弦值,語法如下:Sin(number)參數(shù)number表示一個(gè)以弧度為單位的角。Sin函數(shù)取一角度為參數(shù)值180后即能角度轉(zhuǎn)換為弧度。Cos(number)7行代碼設(shè)置圖片的LeftShape對象的Left屬性設(shè)置圖形從左邊界至A列左邊界(在工作表中)或圖表區(qū)左邊界(在圖表工作表中)CosLeftCos函數(shù)返回指定一個(gè)角的余弦值,語法如下:Cos(number)參數(shù)number表示一個(gè)以弧度為單位的角。Cos函數(shù)的number長度除以斜邊長度之商,將角度除以180后即能角度轉(zhuǎn)換為弧度。第8行代碼設(shè)置圖片填充的前景色隨著循環(huán)的過程不斷的變化。使用Fill屬性返回一個(gè)FillFormat對象,F(xiàn)illFormat對象代表圖形的填充格式,其ForeColor屬性設(shè)置對象填充的前景色。expression.IncrementRotation(Increment)911行代碼在圖形移動(dòng)的過程中使用IncrementRotationz軸的轉(zhuǎn)角,IncrementRotationz語法如下:expression.IncrementRotation(Increment)參數(shù)expression是必需的,返回一個(gè)Shape對象。參數(shù)Increment時(shí)針方向旋轉(zhuǎn),負(fù)值使圖形按逆時(shí)針方向旋轉(zhuǎn)。11行是關(guān)鍵的代碼,使用DoEvents效果。運(yùn)行MoveShape過程,工作表的圖形在自身進(jìn)行逆時(shí)針方向旋轉(zhuǎn)的同時(shí)沿著一個(gè)圓形的弧度進(jìn)行移動(dòng),并不斷改變其填充的顏色。技巧6工作表中自動(dòng)插入圖片在日常工作中經(jīng)常需要在工作表中插入大量圖片,比如在如圖6-1所示的工作表中需AC常繁瑣且極易出錯(cuò),而使用VBA代碼可以很好的完成操作。VBA常用技巧代碼解析圖6-1 需插入圖片的工作表示例代碼如下:#001SubinsertPic()#002DimiAsInteger#003DimFilPathAsString#004DimrngAsRange#005DimsAsString#006WithSheet1#007Fori=3To.Range("a65536").End(xlUp).Row#008h&"&,t IfDir(FilPath)<>""Then#010.Pictures.Insert(FilPath).Select#011Setrng=.Cells(i,3)#012WithSelection#013.Top=rng.Top+1#014.Left=rng.Left+1#015.Width=rng.Width-1#016.Height=rng.Height-1#017EndWith#018Else#019s=s&Chr(10)&.Cells(i,1).Text#020EndIf#021Next15VBA常用技巧代碼解析#022#022.Cells(3,1).Select#023EndWith#024Ifs<>""Then#025MsgBoxs&Chr(10&"有照片!"#026EndIf#027EndSub代碼解析:insertPic過程使用Insert方法在工作表中插入圖片。7行代碼開始For...Next循環(huán),循環(huán)的終值由工作表中A列單元格的行數(shù)所決定。8FilPathA名,本例中圖片文件的文件名應(yīng)和A列中的名稱一致。911行代碼使用Dir函數(shù)在同一文件夾中查找與AInsertC列的單元格賦給變量rng。Dir函數(shù)返回一個(gè)Dir函數(shù)會返回一("")。1217TopLeft屬性將圖片移動(dòng)到C列所對應(yīng)的單元格中,并設(shè)置其Width屬性和Height屬性使其適應(yīng)所在單元格的大小。第1819行代碼如果在同一文件夾中沒有與A串變量s保存沒有圖片文件的名稱。2426s用消息框提示。運(yùn)行insertPic過程工作表如圖6-2所示。16VBA常用技巧代碼解析圖6-2 插入圖片后的工作表如果文件夾中缺少對應(yīng)的圖片文件,則會進(jìn)行提示,如圖6-3所示。圖6-3 缺少圖片文件提示技巧7固定工作表中圖形的位置17VBA常用技巧代碼解析VBA常用技巧代碼解析PAGEPAGE21可能因一些人為的因素導(dǎo)致圖片位置偏移或尺寸變化,此時(shí)可以使用VBA如下面的代碼所示。#001SubShapeAddress()#002DimrngAsRange#003Setrng=Sheet1.Range("B4:E22")#004WithSheet1.Shapes("Picture1")#005.Rotation=0#006.Select#007WithSelection#008.Top=rng(1).Top+1#009.Left=rng(1).Left+1#010.Width=rng.Width-0.5#011.Height=rng.Height-0.5#012EndWith#013EndWith#014Range("A1").Select#015EndSub代碼解析:ShapeAddress過程調(diào)整指定圖形在工作表中的位置。3行代碼變量rng保存工作表中插入圖片的單元格區(qū)域5行代碼設(shè)置圖片的轉(zhuǎn)角,應(yīng)用于Shape對象Rotation屬性以度為單位返回或設(shè)置90712屬性和Left屬性將圖片移動(dòng)到變量rng單元格區(qū)域中,并設(shè)置其Width屬性和Height屬性使其適應(yīng)所在單元格區(qū)域的大小。第14行代碼選擇A1單元格,不然圖片會處于選中狀態(tài)。Picture的大小、位置。技巧8VBA自動(dòng)生成圖表在實(shí)際工作中我們常用圖表來表現(xiàn)數(shù)據(jù)間的某種相對關(guān)系,一般采用手工插入的方式,而使用VBA代碼可以在工作表中自動(dòng)生成圖表,如下面的示例代碼。#001#002#003SubChartAdd()DimmyRangeAsRangeDimmyChartAsChartObject#004DimRAsInteger#005WithSheet1#006.ChartObjects.Delete#007R=.Range("A65536").End(xlUp).Row#008SetmyRange=.Range("A"&1&":B"&R)#009SetmyChart=.ChartObjects.Add(120,40,400,250)#010WithmyChart.Chart#011.ChartType=xlColumnClustered#012.SetSourceDataSource:=myRange,PlotBy:=xlColumns#013.ApplyDataLabelsShowValue:=True#014.HasTitle=True#015#016.ChartTitle.Text表制作示例"With.ChartTitle.Font#017.Size=20#018.ColorIndex=3#019#020.Name新魏"EndWith#021With.ChartArea.Interior#022.ColorIndex=8#023.PatternColorIndex=1#024.Pattern=xlSolid#025EndWith#026With.PlotArea.Interior#027.ColorIndex=35#028.PatternColorIndex=1#029#030#031#032.Pattern=xlSolidEndWith.SeriesCollection(1).DataLabels.DeleteWith.SeriesCollection(2).DataLabels.Font#033.Size=10#034.ColorIndex=5#035EndWith#036EndWith#037EndWith#038SetmyRange=Nothing#039SetmyChart=Nothing#040EndSub代碼解析:ChartAdd過程在工作表中自動(dòng)生成圖表,圖表類型為簇狀柱形圖。expression.ChartObjects(Index)6行代碼使用DeleteChartObjects代表工作表中單個(gè)嵌入圖表對象)或所有嵌入圖表的集合象)的對象,語法如下:expression.ChartObjects(Index)其中參數(shù)Index圖表,因?yàn)槭纠兄挥幸粋€(gè)圖表,所以無需指定其Index參數(shù)。第8行代碼指定圖表的數(shù)據(jù)源。expression.Add(Left,Top,Width,Height)9行代碼使用AddChartObjects對象的Add新的嵌入圖表,語法如下:expression.Add(Left,Top,Width,Height)參數(shù)Left、Top是必需的,以磅為單位給出新對象的初始坐標(biāo),該坐標(biāo)是相對于工作表上單元格A1的左上角或圖表的左上角的坐標(biāo)。參數(shù)Width、Height是必需,以磅為單位給出新對象的初始大小。10Chart屬性返回新創(chuàng)建的圖表,應(yīng)用于ChartObjectChart性返回一個(gè)Chart對象,該對象代表指定對象所包含的圖表。11行代碼指定新創(chuàng)建圖表的圖表類型,應(yīng)用于Chart對象的ChartType設(shè)置圖表的類型,可以為XlChartType常量之一,具體請參閱VBAxlColumnClustered即圖表類型為簇狀柱形圖。第12行代碼指定圖表的數(shù)據(jù)源和繪圖方式,應(yīng)用于Chart對象的SetSourceData方法為指定圖表設(shè)置源數(shù)據(jù)區(qū)域,語法如下:expression.SetSourceData(Source,PlotBy)expression.SetSourceData(Source,PlotBy)參數(shù)expression是必需的,該表達(dá)式返回一個(gè)Chart對象。參數(shù)Source是可選的,源數(shù)據(jù)的區(qū)域。參數(shù)PlotBy系列產(chǎn)生在列xlRows(系列產(chǎn)生在行。expression.ApplyDataLabels(Type,LegendKey,AutoText, HasLeaderLines,ShowSeriesName,ShowCategoryName,ShowValue,ShowPercentage,ShowBubbleSize,13ApplyDataLabelsexpression.ApplyDataLabels(Type,LegendKey,AutoText, HasLeaderLines,ShowSeriesName,ShowCategoryName,ShowValue,ShowPercentage,ShowBubbleSize,Separator)Separator)參數(shù)expression是必需的,該表達(dá)式返回一個(gè)Chart對象。參數(shù)Type是可選的,要應(yīng)用的數(shù)據(jù)標(biāo)簽的類型,可為表格8-1 所列的XlDataLabelsType常量之一。常量常量值描述xlDataLabelsShowBubbleSizes6無xlDataLabelsShowLabelAndPercent 5占總數(shù)的百分比及數(shù)據(jù)點(diǎn)所屬的分類。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowPercent3占總數(shù)的百分比。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowLabel4數(shù)據(jù)點(diǎn)所屬的分類。xlDataLabelsShowNone-4142 無數(shù)據(jù)標(biāo)簽。xlDataLabelsShowValue2數(shù)據(jù)點(diǎn)的值,若未指定本參數(shù),默認(rèn)使用此設(shè)置。表格8-1XlDataLabelsType常量參數(shù)LegendKey是可選的,如果該值為True,則顯示數(shù)據(jù)點(diǎn)旁的圖例項(xiàng)標(biāo)示。默認(rèn)值為False。參數(shù)是可選的,如果對象根據(jù)內(nèi)容自動(dòng)生成正確的文字,則該值為參數(shù)HasLeaderLines是可選的,如果數(shù)據(jù)系列具有引導(dǎo)線,則該值為。參數(shù)ShowSeriesName是可選的,數(shù)據(jù)標(biāo)簽的系列名稱。參數(shù)ShowCategoryName參數(shù)ShowValue是可選的,數(shù)據(jù)標(biāo)簽的值。參數(shù)ShowPercentage是可選的,數(shù)據(jù)標(biāo)簽的百分比。參數(shù)ShowBubbleSize參數(shù)Separator是可選的,數(shù)據(jù)標(biāo)簽的分隔符。VBA常用技巧代碼解析第1415行代碼設(shè)置新創(chuàng)建的圖表有可見的標(biāo)題并設(shè)置圖表標(biāo)題的文字HasTitle屬性,如果坐標(biāo)軸或圖表有可見標(biāo)題,則該值為ChartTitle返回一個(gè)ChartTitle對象,代表指定圖表的標(biāo)題。16202125行代碼設(shè)置圖表區(qū)的顏色。2630行代碼設(shè)置繪圖區(qū)的顏色。31SeriesCollection表或圖表組中單個(gè)數(shù)據(jù)系列)或所有數(shù)據(jù)系列的集合(SeriesCollection集合)的對象,語法如下:expression.SeriesCollection(Index)可選的Index參數(shù)指定數(shù)據(jù)系列的名稱或編號。DataLabels方法則返回代表數(shù)據(jù)系列中的單個(gè)數(shù)據(jù)標(biāo)簽對象)數(shù)據(jù)標(biāo)簽的集合(DataLabels集合)的對象,語法如下:expression.DataLabels(Index)可選的Index參數(shù)指定數(shù)據(jù)系列中的數(shù)據(jù)標(biāo)簽的編號。第32行到第36行代碼設(shè)置圖表上第二個(gè)數(shù)據(jù)系列中的數(shù)據(jù)標(biāo)簽的字體格式。運(yùn)行ChartAdd過程,在工作表中創(chuàng)建簇狀柱形圖,如圖8-1所示。圖8-1 創(chuàng)建簇狀柱形圖22VBA常用技巧代碼解析技巧9使用獨(dú)立窗口顯示圖表如果需要將工作表中嵌入的圖表顯示在獨(dú)立的窗口中,可以使用下面的代碼。#001SubChartShow()#002WithSheet1.ChartObjects(1)#003.Activate#004.Chart.ShowWindow=True#005EndWith#006WithActiveWindow#007.Top=50#008.Left=50#009.Width=400#010.Height=280#011.Caption=ThisWorkbook.Name#012EndWith#013EndSub代碼解析:ChartShow過程,將工作表中嵌入的圖表顯示在獨(dú)立的窗口中。25行代碼將工作表中指定圖表的ShowWindow屬性設(shè)置為的窗口顯示該圖表。第7、8行代碼指定活動(dòng)窗口顯示的位置。第91011行代碼指定活動(dòng)窗口標(biāo)題欄中顯示的標(biāo)題。運(yùn)行ChartShow過程結(jié)果如圖9-1所示。23VBA常用技巧代碼解析圖9-1 使用獨(dú)立窗口顯示圖表技巧10 導(dǎo)出工作表中的圖表如果需要將工作表中的圖表保存為單獨(dú)的圖像文件,可以使用Export方法以圖形文件格式導(dǎo)出圖表,示例代碼如下。#001SubExportChart()#002DimmyChartAsChart#003DimmyFileNameAsString#004SetmyChart=Sheet1.ChartObjects(1).Chart#005myFileName="myChart.jpg"#006OnErrorResumeNext#007KillThisWorkbook.Path&"\"&myFileName#008myChart.ExportFilename:=ThisWorkbook.Path_#009&"\"&myFileName,Filtername:="JPG"24VBA常用技巧代碼解析#010 MsgBox表已保存在&ThisWorkbook.Path&文件夾中!"#011 SetmyChart=Nothing#012EndSub代碼解析:ExportChart過程使用Export方法將工作表中的圖表以圖形文件的形式導(dǎo)出。第4行代碼指定工作表中的圖表對象。第5行代碼指定圖形文件保存的文件名。第6、7行代碼使用Kill語句刪除文件夾中原有的圖形文件。當(dāng)文件夾中指定刪除的文件不存在時(shí)Kill語句會出錯(cuò)所以需要使用OnError語句忽略錯(cuò)誤。9行代碼使用ExportChart對象的Export方法以圖形文件格式

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論