Excel VBA常用技巧 第04章 shape及Chart對象_第1頁
Excel VBA常用技巧 第04章 shape及Chart對象_第2頁
Excel VBA常用技巧 第04章 shape及Chart對象_第3頁
Excel VBA常用技巧 第04章 shape及Chart對象_第4頁
Excel VBA常用技巧 第04章 shape及Chart對象_第5頁
已閱讀5頁,還剩24頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、-作者xxxx-日期xxxxExcel VBA常用技巧 第04章 shape及Chart對象【精品文檔】VBA常用技巧目錄 VBA常用技巧1第4章Shape(圖形)、Chart(圖表)對象2技巧1在工作表中添加圖形2技巧2導(dǎo)出工作表中的圖片7技巧3在工作表中添加藝術(shù)字9技巧4遍歷工作表中的圖形11技巧5移動、旋轉(zhuǎn)圖片13技巧6工作表中自動插入圖片14技巧7固定工作表中圖形的位置17技巧8使用VBA自動生成圖表19技巧9使用獨(dú)立窗口顯示圖表23技巧10導(dǎo)出工作表中的圖表24技巧11多圖表制作25第4章 Shape(圖形)、Chart(圖表)對象技巧1 在工作表中添加圖形如果需要在工作表中添加圖形

2、對象,可以使用AddShape方法,如下面的代碼所示。#001 Sub 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 With myShape#007 .Name = myShape#008 #009 .Text = 單擊將選擇Sheet2!#010 With .Font#011 .Name

3、 = 華文行楷#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#021 .Placement = 3#022 End With#023 #024 #025 With .Line#026 .Weight = 1#027 .DashStyle = msoLineSolid#028 .Style

4、 = msoLineSingle#029 .Transparency = 0#030 .Visible = msoTrue#031 .ForeColor.SchemeColor = 40#032 .BackColor.RGB = RGB(255, 255, 255)#033 End With#034 With .Fill#035 .Transparency = 0#036 .Visible = msoTrue#037 .ForeColor.SchemeColor = 41#038 .OneColorGradient 1#039 End With#040 End With#041 Sheet1.

5、Range(A1).Select#042 Sheet1.Hyperlinks.Add Anchor:=myShape, Address:=, _#043 SubAddress:=Sheet2!A1, ScreenTip:=選擇Sheet2!#044 Set myShape = Nothing#045 End Sub代碼解析:AddShape過程在工作表中添加一個(gè)矩形并設(shè)置其外觀等屬性。第2行代碼聲明變量myShape的對象類型。第3、4行代碼刪除可能存在的名稱為“myShape”的圖形對象。第5行代碼使用AddShape方法在工作表中添加一個(gè)矩形。當(dāng)該方法應(yīng)用于Shapes對象時(shí),返回一個(gè)Sh

6、ape對象,該對象代表工作表中的新自選圖形,語法如下:expression.AddShape(Type, Left, Top, Width, Height)參數(shù)expression是必需的,返回一個(gè)Shapes對象。參數(shù)Type是必需的,指定要創(chuàng)建的自選圖形的類型。參數(shù)Left和Top是必需的,以磅為單位給出自選圖形邊框左上角的位置。參數(shù)Width和Height是必需的,以磅為單位給出自選圖形邊框的寬度和高度。第7行代碼將新建圖形命名為“myShape”,向Shapes集合添加新的圖形時(shí),將對新添加的圖形賦以默認(rèn)的名稱,若要為圖形指定更有意義的名稱,可指定其Name屬性。第8行到第16行代碼為

7、矩形添加文字,并設(shè)定其格式。其中第8行代碼使用TextFrame 屬性和Characters方法返回該矩形的字符區(qū)域。應(yīng)用于Shape對象的TextFrame 屬性返回一個(gè)TextFrame對象,該對象包含指定圖形對象的對齊和定位屬性;Characters方法返回一個(gè)Characters對象,該對象代表某個(gè)圖形的文本框中的字符區(qū)域,語法如下:expression.Characters(Start, Length)參數(shù)expression是必需的,返回一個(gè)指定文本框內(nèi)Characters對象的表達(dá)式。參數(shù)Start是可選的,表示將要返回的第一個(gè)字符,如果此參數(shù)設(shè)置為 1 或被忽略,則Charac

8、ters方法會返回以第一個(gè)字符為起始字符的字符區(qū)域。參數(shù)Length是可選的,表示要返回的字符個(gè)數(shù)。如果此參數(shù)被忽略,則Characters方法會返回該字符串的剩余部分(由Start參數(shù)指定的字符以后的所有字符)。第9行代碼為矩形添加文字,應(yīng)用于Characters對象的Text屬性返回或設(shè)置對象的文本,為可讀寫的String類型。第10行到第15行代碼設(shè)置矩形中文字的屬性,應(yīng)用于Characters對象Font屬性返回一個(gè)Font對象,該對象代表指定對象的字體屬性(字體名稱、字體大小、字體顏色等),第11行代碼設(shè)置字體名稱,第12行代碼設(shè)置字體樣式,第13行代碼設(shè)置字體大小,第14行代碼顏色

9、。第17行到第20行代碼設(shè)定矩形中文字的對齊方式。應(yīng)用于TextFrame對象的HorizontalAlignment屬性返回或設(shè)置指定對象的水平對齊方式,可為表格 531所示的XlHAlign常量之一。常量值描述xlHAlignCenter-4108居中xlHAlignCenterAcrossSelection7靠左xlHAlignDistributed-4117分散對齊xlHAlignFill5分散對齊xlHAlignGeneral1靠左xlHAlignJustify-4130兩端對齊xlHAlignLeft-4131靠左xlHAlignRight-4152靠右表格 11Horizonta

10、lAlignment屬性的XlHAlign常量應(yīng)用于TextFrame對象的VerticalAlignment屬性返回或設(shè)置指定對象的垂直對齊方式,可為表格 532所示的XlHAlign常量之一。常量值描述xlVAlignCenter-4108居中xlVAlignJustify-4130兩端對齊xlVAlignBottom-4107靠下xlVAlignDistributed-4117分散對齊xlVAlignTop-4160靠上表格 12VerticalAlignment屬性的XlHAlign常量第21行代碼設(shè)置矩形大小和位置不隨單元格而變,應(yīng)用于Shape對象的Placement屬性返回或設(shè)置

11、對象與所在的單元格之間的附屬關(guān)系,可為表格 533所示的XlPlacement常量之一。常量值描述xlFreeFloating3大小、位置均固定xlMove2大小固定、位置隨單元格而變xlMoveAndSize1大小、位置隨單元格而變表格 13XlPlacement常量第24行到第32行代碼設(shè)置矩形的邊框線條格式,應(yīng)用于ShapeRange集合的Line屬性返回一個(gè)LineFormat 對象,該對象包含指定圖形的線條格式屬性。其中第26行代碼設(shè)置矩形線條粗細(xì),第27行代碼設(shè)置矩形線條的虛線樣式,第28行代碼設(shè)置矩形填充的透明度,第29行代碼設(shè)置矩形為可見,第30行代碼設(shè)置矩形的前景色,第31行

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

13、Style常量之一。常量值描述msoGradientDiagonalDown4斜下msoGradientDiagonalUp3斜上msoGradientFromCenter7無msoGradientFromCorner5角部幅射msoGradientFromTitle6中心幅射msoGradientHorizontal1水平msoGradientMixed-2無msoGradientVertical2垂直表格 14MsoGradientStyle常量參數(shù)Variant是必需的,漸變變量。取值范圍為 1 到 4 之間,分別與“填充效果”對話框中“漸變”選項(xiàng)卡的四個(gè)漸變變量相對應(yīng)。如果Gradie

14、ntStyle 設(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是必需的,返回一個(gè)Hyperlinks對象。參數(shù)Anchor是必需的,超鏈接的位置??蔀镽ange對象或Shape對象

15、。參數(shù)Address是必需的,超鏈接的地址。參數(shù)SubAddress是必需的,超鏈接的子地址。參數(shù)ScreenTip是可選的,當(dāng)鼠標(biāo)指針停留在超鏈接上時(shí)所顯示的屏幕提示。參數(shù)TextToDisplay是可選的,要顯示的超鏈接的文本。運(yùn)行AddShape過程結(jié)果如圖 531所示。圖 11在工作表中添加圖形技巧2 導(dǎo)出工作表中的圖片有時(shí)需要將工作表中的圖形對象保存為單獨(dú)的圖像文件,可以使用Export方法將工作表中的圖片以文件形式導(dǎo)出,如下面的代碼所示。#001 Sub ExportShp()#002 Dim Shp As Shape#003 Dim FileName As String#004

16、#005 If Shp.Type = msoPicture Then#006 FileName = ThisWorkbook.Path & & Shp.Name & .gif#007 #008 With Sheet1.ChartObjects.Add(0, 0, Shp.Width + 28, Shp.Height + 30).Chart#009 .Paste#010 .Export FileName, gif#011 #012 End With#013 End If#014 Next#015 End Sub代碼解析:ExportShp過程將Sheet1工作表的所有圖片以文件形式導(dǎo)出到同一目錄

17、中。第4行代碼使用For Each.Next 語句遍歷Sheet1工作表中的所有圖形。第5行代碼判斷圖形的類型是否為圖片,應(yīng)用于Shape對象的Type屬性返回或設(shè)置圖形類型,可以為表格 541所示的MsoShapeType常量之一。常量值說明msoShapeTypeMixed-2混合型圖形msoAutoShape1自選圖形msoCallout2沒有邊框線的標(biāo)注msoChart3圖表msoComment4批注msoFreeform5任意多邊形msoGroup6圖形組合msoFormControl8窗體控件msoLine9線條msoLinkedOLEObject10鏈接式或內(nèi)嵌OLE對象msoL

18、inkedPicture11剪貼畫或圖片msoOLEControlObject12ActiveX 控件msoPicture13圖片msoTextEffect15藝術(shù)字msoTextBox17文本框msoDiagram21組織結(jié)構(gòu)圖或其他圖示表格 21MsoShapeType常量第6行代碼使用字符串變量FileName記錄需導(dǎo)出圖形的路徑和名稱。第7行代碼復(fù)制圖形,應(yīng)用于Shape對象的Copy方法將對象復(fù)制到剪貼板。第8行代碼使用Add方法在工作表中添加一個(gè)圖表,應(yīng)用于ChartObjects對象的Add 方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left, Top, Wi

19、dth, Height)參數(shù)expression是必需的,返回一個(gè)ChartObjects對象。參數(shù)Left、參數(shù)Top是必需的,以磅為單位給出新對象的初始坐標(biāo),該坐標(biāo)是相對于工作表上單元格A1的左上角或圖表的左上角的坐標(biāo)。參數(shù)Width、參數(shù)Height是必需的,以磅為單位給出新對象的初始大小。第9行代碼使用Paste方法將圖形粘貼到新的嵌入圖表中,應(yīng)用于Chart對象的Paste方法將剪貼板中的圖表數(shù)據(jù)粘貼到指定的圖表中,語法如下:expression.Paste(Type)參數(shù)expression是必需的,返回一個(gè)Chart對象。參數(shù)Type是可選的的,如果剪貼板中有圖表,本參數(shù)指定要粘

20、貼的圖表信息。可為以下XlPasteType常量之一:xlFormats、xlFormulas或xlAll。默認(rèn)值為xlAll,如果剪貼板中是數(shù)據(jù)不是圖表,則不能使用本參數(shù)。第10行代碼使用Export方法將圖表導(dǎo)出到同一目錄中,應(yīng)用于Chart對象的Export方法以圖形格式導(dǎo)出圖表,語法如下:expression.Export(Filename, FilterName, Interactive)其中參數(shù)Filename是必需的,被導(dǎo)出的文件的名稱。第10行代碼刪除新建的圖表。因?yàn)镃hart對象是不能使用Delete方法直接刪除的,應(yīng)先使用Parent屬性返回指定對象的父對象,然后使用Del

21、ete方法刪除。技巧3 在工作表中添加藝術(shù)字在工作表中插入藝術(shù)字,可以使用AddTextEffect方法,如下面的代碼所示。#001 Sub TextEffect()#002 Dim myShape As Shape#003 On Error Resume Next#004 Sheet1.Shapes(myShape).Delete#005 Set myShape = Sheet1.Shapes.AddTextEffect _#006 (PresetTextEffect:=msoTextEffect15, _#007 Text:=我愛 Excel Home, FontName:=宋體, Fon

22、tSize:=36, _#008 FontBold:=msoFalse, FontItalic:=msoFalse, _#009 Left:=100, Top:=100)#010 With myShape#011 .Name = myShape#012 With .Fill#013 .Solid#014 .ForeColor.SchemeColor = 55#015 .Transparency = 0#016 End With#017 With .Line#018 .Weight = 1.5#019 .DashStyle = msoLineSolid#020 .Style = msoLineS

23、ingle#021 .Transparency = 0#022 or = 12#023 .BackColor.RGB = RGB(255, 255, 255)#024 End With#025 End With#026 Set myShape = Nothing#027 End Sub代碼解析:TextEffect過程在工作表中插入藝術(shù)字并設(shè)置其格式。第3、4行代碼刪除工作表中可能存在的藝術(shù)字,以免重復(fù)添加。第5行到第9行代碼使用AddTextEffect方法在工作表中插入藝術(shù)字,AddTextEffect方法創(chuàng)建藝術(shù)字對象。返回一個(gè)Shape對象,該對象代表新建的藝術(shù)字對象,語法如下:exp

24、ression.AddTextEffect(PresetTextEffect, Text, FontName, FontSize, FontBold, FontItalic, Left, Top)參數(shù)expression是必需的,返回一個(gè)Shapes對象。參數(shù)PresetTextEffect是必需的,藝術(shù)字預(yù)置文本效果,可為MsoPresetTextEffect 常量之一,等同于在工作表中插入藝術(shù)字時(shí)的樣式選項(xiàng)卡,如圖 551所示。圖 31藝術(shù)字樣式參數(shù)Text是必需的,藝術(shù)字對象中的文字。參數(shù)FontName是必需的,藝術(shù)字對象中所用的字體名稱。參數(shù)FontSize是必需的,以磅為單位給出藝

25、術(shù)字對象中所用的字體大小。參數(shù)FontBold是必需的,在藝術(shù)字中要加粗的字體。參數(shù)FontItalic是必需的,在藝術(shù)字中要傾斜的字體。參數(shù)Left和參數(shù)Top是必需的,相對于文檔的左上角、頂部,以磅為單位給出藝術(shù)字對象邊框左上角的位置。第11行代碼將藝術(shù)字對象重命名為“myShape”。第12行到第16行代碼設(shè)置藝術(shù)字對象的填充格式。其中第13行代碼將填充格式設(shè)置為均一的顏色,應(yīng)用于FillFormat 對象的Solid方法將指定的填充格式設(shè)置為均一的顏色,可用本方法將帶有漸進(jìn)色、紋理、圖案或背景的填充格式轉(zhuǎn)換為單色的填充格式。第14行代碼設(shè)置填充的顏色。第15行代碼設(shè)置填充的透明度。第1

26、7行到第24行代碼設(shè)置藝術(shù)字對象的線條格式屬性。其中第18行代碼設(shè)置線條粗細(xì),第19行代碼設(shè)置線條虛線樣式,第20行代碼設(shè)置線條區(qū)域的樣式,第21行代碼設(shè)置線條的透明度,第22行代碼設(shè)置前景色,第23行代碼設(shè)置填充背景的顏色。運(yùn)行TextEffect過程工作表中如圖 552所示。圖 32工作表中插入藝術(shù)字技巧4 遍歷工作表中的圖形工作表中的多個(gè)圖形,如果使用系統(tǒng)缺省名稱,如“文本框1”、“文本框2”這樣前面是固定的字符串,后面是序號的,可以使用For.Next 語句遍歷圖形,如下面的代碼所示。#001 Sub ErgShapes_1()#002 Dim i As Integer#003 For

27、 i = 1 To 4#004 Sheet1.Shapes(文本框 & i).TextFrame.Characters.Text = #005 Next#006 End Sub代碼解析:ErgShapes_1過程清除工作表中四個(gè)圖形文本框中的文字。第3行到第5行代碼,使用Shapes屬性在工作表上的三個(gè)圖形文本框中循環(huán)。Shapes屬性返回Shapes對象,代表工作表或圖形工作表上的所有圖形,可以使用Shapes(index)返回單個(gè)的Shape對象,其中index是圖形的名稱或索引號。返回單個(gè)的Shape對象后使用TextFrame 屬性和Characters方法清除文本框中的字符,關(guān)于Sh

28、ape對象的TextFrame 屬性和Characters方法請參閱技巧1 。如果圖形的名稱沒有規(guī)律,可以使用For Each.Next 語句循環(huán)遍歷所有圖形,根據(jù)Type屬性返回的圖形類型進(jìn)行相應(yīng)的操作,如下面的代碼所示。#001 Sub ErgShapes_2()#002 Dim myShape As Shape#003 Dim i As Integer#004 i = 1#006 If myShape.Type = msoTextBox Then#007 myShape.TextFrame.Characters.Text = 這是第 & i & 個(gè)文本框#008 i = i + 1#00

29、9 End If#010 Next#011 End Sub代碼解析:ErgShapes_2過程在工作表中的所有圖形文本框中寫入文本。第5行代碼使用For Each.Next 語句循環(huán)遍歷工作表中所有的圖形對象。第6行到第9行代碼如果圖形對象是文本框則在文本框中寫入文本。其中第6行代碼根據(jù)Type屬性判斷圖形對象是否為文本框,應(yīng)用于Shape對象的Type屬性返回或設(shè)置圖形類型,MsoShapeType類型,請參閱表格 21 。第7行代碼根據(jù)返回的Type屬性值在所有的文本框內(nèi)寫入相應(yīng)的文本,如圖 561所示。圖 41遍歷所有的文本框技巧5 移動、旋轉(zhuǎn)圖片工作表中的圖片可以移動、旋轉(zhuǎn),如下面的代

30、碼所示。#001 Sub MoveShape()#002 Dim i As Long#003 Dim j As Long#004 With Sheet1.Shapes(1)#005 For i = 1 To 3000 Step 5#006 .Top = Sin(i * (3.1416 / 180) * 100 + 100#007 .Left = Cos(i * (3.1416 / 180) * 100 + 100#008 .Fill.ForeColor.RGB = i * 100#009 For j = 1 To 10#010 .IncrementRotation -2#011 DoEvent

31、s#012 Next#013 Next#014 End With#015 End Sub代碼解析:MoveShape過程移動、旋轉(zhuǎn)工作表中的圖片并不斷改變其填充的前景色。第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)換為弧度。第7行代碼設(shè)置圖片的Left屬性值,應(yīng)用于Shape對

32、象的Left屬性設(shè)置圖形從左邊界至 A 列左邊界(在工作表中)或圖表區(qū)左邊界(在圖表工作表中)的距離。在循環(huán)的過程中使用Cos函數(shù)將Left屬性值設(shè)置為一個(gè)圓形的弧度值。Cos函數(shù)返回指定一個(gè)角的余弦值,語法如下:Cos(number)參數(shù)number表示一個(gè)以弧度為單位的角。Cos函數(shù)的number參數(shù)為一個(gè)角,并返回直角三角形兩邊的比值,該比值為角的鄰邊長度除以斜邊長度之商,將角度除以180后即能角度轉(zhuǎn)換為弧度。第8行代碼設(shè)置圖片填充的前景色隨著循環(huán)的過程不斷的變化。使用Fill屬性返回一個(gè)FillFormat對象,F(xiàn)illFormat對象代表圖形的填充格式,其ForeColor 屬性設(shè)置

33、對象填充的前景色。第9行到第11行代碼在圖形移動的過程中使用IncrementRotation方法設(shè)置圖形繞 z 軸的轉(zhuǎn)角,IncrementRotation方法以指定的度數(shù)為增量,更改指定的圖形繞 z 軸的轉(zhuǎn)角,語法如下:expression.IncrementRotation(Increment)參數(shù)expression是必需的,返回一個(gè)Shape對象。參數(shù)Increment是必需的,以度為單位指定圖形在水平方向的旋轉(zhuǎn)量,正值使圖形按順時(shí)針方向旋轉(zhuǎn),負(fù)值使圖形按逆時(shí)針方向旋轉(zhuǎn)。其中第11行是關(guān)鍵的代碼,使用DoEvents函數(shù)轉(zhuǎn)讓控制權(quán),否則達(dá)不到預(yù)計(jì)的視覺效果。運(yùn)行MoveShape過程

34、,工作表的圖形在自身進(jìn)行逆時(shí)針方向旋轉(zhuǎn)的同時(shí)沿著一個(gè)圓形的弧度進(jìn)行移動,并不斷改變其填充的顏色。技巧6 工作表中自動插入圖片在日常工作中經(jīng)常需要在工作表中插入大量圖片,比如在如圖 581所示的工作表中需要根據(jù)A列的名稱在C列插入保存在同一目錄中的相應(yīng)的圖片,如果使用手工插入不僅非常繁瑣且極易出錯(cuò),而使用VBA代碼可以很好的完成操作。圖 61需插入圖片的工作表示例代碼如下:#001 Sub insertPic()#002 Dim i As Integer#003 Dim FilPath As String#004 Dim rng As Range#005 Dim s As String#006

35、With Sheet1#007 For i = 3 To .Range(a65536).End(xlUp).Row#008 FilPath = ThisWorkbook.Path & & .Cells(i, 1).Text & .jpg#009 If Dir(FilPath) Then#010 .Pictures.Insert(FilPath).Select#011 Set rng = .Cells(i, 3)#012 With Selection#013 .Top = rng.Top + 1#014 .Left = rng.Left + 1#015 .Width = rng.Width -

36、1#016 .Height = rng.Height - 1#017 End With#018 Else#019 s = s & Chr(10) & .Cells(i, 1).Text#020 End If#021 Next#022 .Cells(3, 1).Select#023 End With#024 If s Then#025 MsgBox s & Chr(10) & 沒有照片!#026 End If#027 End Sub代碼解析:insertPic過程使用Insert方法在工作表中插入圖片。第7行代碼開始For.Next循環(huán),循環(huán)的終值由工作表中A列單元格的行數(shù)所決定。第8行代碼字符

37、串變量FilPath保存A列名稱單元格所對應(yīng)的圖片文件的路徑和文件名,本例中圖片文件的文件名應(yīng)和A列中的名稱一致。第9行到第11行代碼使用Dir函數(shù)在同一文件夾中查找與A列單元格中的名稱相對應(yīng)的圖片文件,如果對應(yīng)的圖片文件存在則使用Insert方法將圖片插入到工作表中,并將C列的單元格賦給變量rng。Dir函數(shù)返回一個(gè)String,用以表示一個(gè)文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標(biāo)相匹配。如果已沒有合乎條件的文件,則Dir函數(shù)會返回一個(gè)零長度字符串 ()。第12行到第17行代碼,當(dāng)圖片片插入到工作表時(shí)其實(shí)是插入到活動單元格的,此時(shí)需設(shè)置圖片的Top屬性和Left屬

38、性將圖片移動到C列所對應(yīng)的單元格中,并設(shè)置其Width屬性和Height屬性使其適應(yīng)所在單元格的大小。第18、19行代碼如果在同一文件夾中沒有與A列單元格對應(yīng)的圖片文件,則使用字符串變量s保存沒有圖片文件的名稱。第24行到第26行代碼如果字符串變量s不等于空白說明文件夾中缺少圖片文件,使用消息框提示。運(yùn)行insertPic過程工作表如圖 582所示。圖 62插入圖片后的工作表如果文件夾中缺少對應(yīng)的圖片文件,則會進(jìn)行提示,如圖 583所示。圖 63缺少圖片文件提示技巧7 固定工作表中圖形的位置工作表中插入的圖片,一般都是固定的尺寸和固定的單元格區(qū)域中的,但在實(shí)際使用中可能因一些人為的因素導(dǎo)致圖片

39、位置偏移或尺寸變化,此時(shí)可以使用VBA代碼進(jìn)行調(diào)整,如下面的代碼所示。#001 Sub ShapeAddress()#002 Dim rng As Range#003 Set rng = Sheet1.Range(B4:E22)#004 With Sheet1.Shapes(Picture 1)#005 .Rotation = 0#006 .Select#007 With Selection#008 .Top = rng(1).Top + 1#009 .Left = rng(1).Left + 1#010 #011 #012 End With#013 End With#014 Range(A1

40、).Select#015 End Sub代碼解析:ShapeAddress過程調(diào)整指定圖形在工作表中的位置。第3行代碼變量rng保存工作表中插入圖片的單元格區(qū)域。第5行代碼設(shè)置圖片的轉(zhuǎn)角,應(yīng)用于Shape對象Rotation屬性以度為單位返回或設(shè)置圖形的轉(zhuǎn)角,設(shè)置為正值向右偏轉(zhuǎn),設(shè)置為負(fù)值向左偏轉(zhuǎn),設(shè)置為零圖片則保持90度垂直。第7行到第12行代碼設(shè)置圖片的Top屬性和Left屬性將圖片移動到變量rng所保存的單元格區(qū)域中,并設(shè)置其Width屬性和Height屬性使其適應(yīng)所在單元格區(qū)域的大小。第14行代碼選擇A1單元格,不然圖片會處于選中狀態(tài)。經(jīng)過以上設(shè)置,工作表中的圖片“Picture 1”

41、不管處于什么狀態(tài)都可以一鍵恢復(fù)其原來的大小、位置。技巧8 使用VBA自動生成圖表在實(shí)際工作中我們常用圖表來表現(xiàn)數(shù)據(jù)間的某種相對關(guān)系,一般采用手工插入的方式,而使用VBA代碼可以在工作表中自動生成圖表,如下面的示例代碼。#001 Sub ChartAdd()#002 Dim myRange As Range#003 Dim myChart As ChartObject#004 Dim R As Integer#005 With Sheet1#006 #007 R = .Range(A65536).End(xlUp).Row#008 Set myRange = .Range(A & 1 & :B

42、& R)#009 Set myChart = .ChartObjects.Add(120, 40, 400, 250)#010 #011 .ChartType = xlColumnClustered#012 .SetSourceData Source:=myRange, PlotBy:=xlColumns#013 .ApplyDataLabels ShowValue:=True#014 .HasTitle = True#015 .ChartTitle.Text = 圖表制作示例#016 #017 .Size = 20#018 .ColorIndex = 3#019 .Name = 華文新魏#0

43、20 End With#021 #022 .ColorIndex = 8#023 .PatternColorIndex = 1#024 .Pattern = xlSolid#025 End With#026 #027 .ColorIndex = 35#028 .PatternColorIndex = 1#029 .Pattern = xlSolid#030 End With#031 #032 #033 .Size = 10#034 .ColorIndex = 5#035 End With#036 End With#037 End With#038 Set myRange = Nothing#0

44、39 Set myChart = Nothing#040 End Sub代碼解析:ChartAdd過程在工作表中自動生成圖表,圖表類型為簇狀柱形圖。第6行代碼使用Delete方法刪除工作表中已經(jīng)存在的圖表,而ChartObjects方法返回代表工作表中單個(gè)嵌入圖表(ChartObject對象)或所有嵌入圖表的集合(ChartObjects對象)的對象,語法如下:expression.ChartObjects(Index)其中參數(shù)Index是可選的,指定圖表的名稱或號碼。該參數(shù)可以是數(shù)組,用于指定多個(gè)圖表,因?yàn)槭纠兄挥幸粋€(gè)圖表,所以無需指定其Index參數(shù)。第8行代碼指定圖表的數(shù)據(jù)源。第9行代

45、碼使用Add方法創(chuàng)建一個(gè)新圖表,應(yīng)用于ChartObjects對象的Add方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left, Top, Width, Height)參數(shù)Left、Top是必需的,以磅為單位給出新對象的初始坐標(biāo),該坐標(biāo)是相對于工作表上單元格A1的左上角或圖表的左上角的坐標(biāo)。參數(shù)Width、Height是必需,以磅為單位給出新對象的初始大小。第10行代碼使用Chart屬性返回新創(chuàng)建的圖表,應(yīng)用于ChartObject對象的Chart屬性返回一個(gè)Chart對象,該對象代表指定對象所包含的圖表。第11行代碼指定新創(chuàng)建圖表的圖表類型,應(yīng)用于Chart對象的Chart

46、Type屬性返回或設(shè)置圖表的類型,可以為XlChartType常量之一,具體請參閱VBA幫助。本例中設(shè)置為xlColumnClustered即圖表類型為簇狀柱形圖。第12行代碼指定圖表的數(shù)據(jù)源和繪圖方式,應(yīng)用于Chart對象的SetSourceData方法為指定圖表設(shè)置源數(shù)據(jù)區(qū)域,語法如下:expression.SetSourceData(Source, PlotBy)參數(shù)expression是必需的,該表達(dá)式返回一個(gè)Chart對象。參數(shù)Source是可選的,源數(shù)據(jù)的區(qū)域。參數(shù)PlotBy是可選的,指定數(shù)據(jù)繪制方式,可為xlColumns(系列產(chǎn)生在列)或xlRows(系列產(chǎn)生在行)。第13行

47、代碼使用ApplyDataLabels方法使圖表顯示數(shù)據(jù)標(biāo)簽和數(shù)據(jù)點(diǎn)的值,應(yīng)用于Chart對象的ApplyDataLabels方法將數(shù)據(jù)標(biāo)簽應(yīng)用于圖表中的某一數(shù)據(jù)點(diǎn)、某一數(shù)據(jù)系列或所有數(shù)據(jù)系列,語法如下:expression.ApplyDataLabels(Type, LegendKey, AutoText, HasLeaderLines, ShowSeriesName, ShowCategoryName, ShowValue, ShowPercentage, ShowBubbleSize, Separator)參數(shù)expression是必需的,該表達(dá)式返回一個(gè)Chart對象。參數(shù)Type是可

48、選的,要應(yīng)用的數(shù)據(jù)標(biāo)簽的類型,可為表格 601所列的XlDataLabelsType 常量之一。常量值描述xlDataLabelsShowBubbleSizes6無xlDataLabelsShowLabelAndPercent5占總數(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è)置。表格 81XlData

49、LabelsType 常量參數(shù)LegendKey是可選的,如果該值為True,則顯示數(shù)據(jù)點(diǎn)旁的圖例項(xiàng)標(biāo)示。默認(rèn)值為False。參數(shù)AutoText是可選的,如果對象根據(jù)內(nèi)容自動生成正確的文字,則該值為True。參數(shù)HasLeaderLines是可選的,如果數(shù)據(jù)系列具有引導(dǎo)線,則該值為True。參數(shù)ShowSeriesName是可選的,數(shù)據(jù)標(biāo)簽的系列名稱。參數(shù)ShowCategoryName是可選的,數(shù)據(jù)標(biāo)簽的分類名稱。參數(shù)ShowValue是可選的,數(shù)據(jù)標(biāo)簽的值。參數(shù)ShowPercentage是可選的,數(shù)據(jù)標(biāo)簽的百分比。參數(shù)ShowBubbleSize是可選的,數(shù)據(jù)標(biāo)簽的氣泡尺寸。參數(shù)Separator是可選的,數(shù)據(jù)標(biāo)簽的分隔符。第14、15行代碼設(shè)置新創(chuàng)建的圖表有可見的標(biāo)題并設(shè)置圖表標(biāo)題的文字。應(yīng)用于Chart對象的HasTitle屬性,如果坐標(biāo)軸或圖表有可見標(biāo)題,則該值為True,而ChartTitle屬性返回一個(gè)ChartTitle對象,代表指定圖表的標(biāo)題。第16行到第20行代碼設(shè)置圖表標(biāo)題文字的格式。第21行到第25行代碼設(shè)置圖表區(qū)的顏色。第26行到第30行代碼設(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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論