常用技巧1shape圖形Chart圖表對象_第1頁
常用技巧1shape圖形Chart圖表對象_第2頁
常用技巧1shape圖形Chart圖表對象_第3頁
常用技巧1shape圖形Chart圖表對象_第4頁
常用技巧1shape圖形Chart圖表對象_第5頁
已閱讀5頁,還剩23頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、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使用獨立窗口顯示圖表23技巧10導(dǎo)出工作表中的圖表24技巧11多圖表制作25第4章 Shape(圖形)、Chart(圖表)對象技巧1 在工作表中添加圖形如果需要在工作表中添加圖形對象,可以使用AddShape方法,如下面的代碼所示。#001 Sub AddShape()#002 Di

2、m 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 With .TextFrame.Characters#009 .Text = 單擊將選擇Sheet2!#010 With .Font#011 .Name = 華文行楷#012 .FontStyle = 常規(guī)

3、#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 myShape.Select#024 With Selection.ShapeRange#025 With .Line#026 .Weight = 1#027 .DashStyle = msoLineSolid

4、#028 .Style = 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, 4, 0.23#039 End With#040

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

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

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

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

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

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

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

12、,第30行代碼設(shè)置矩形的前景色,第31行代碼設(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è)為單色漸變,語法如下:expression.OneColorGradient(Style, Variant, Degree)其中參數(shù)Styl

13、e是必需的,底紋樣式,可為表格 541所示的MsoGradientStyle常量之一。常量值描述msoGradientDiagonalDown4斜下msoGradientDiagonalUp3斜上msoGradientFromCenter7無msoGradientFromCorner5角部幅射msoGradientFromTitle6中心幅射msoGradientHorizontal1水平msoGradientMixed-2無msoGradientVertical2垂直表格 14MsoGradientStyle常量參數(shù)Variant是必需的,漸變變量。取值范圍為 1 到 4 之間,分別與“填充

14、效果”對話框中“漸變”選項卡的四個漸變變量相對應(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是必需的,返回一個Hyperlinks對象。參數(shù)An

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

16、e#003 Dim FileName As String#004 For Each Shp In Sheet1.Shapes#005 If Shp.Type = msoPicture Then#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#012

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

18、m5任意多邊形msoGroup6圖形組合msoFormControl8窗體控件msoLine9線條msoLinkedOLEObject10鏈接式或內(nèi)嵌OLE對象msoLinkedPicture11剪貼畫或圖片msoOLEControlObject12ActiveX 控件msoPicture13圖片msoTextEffect15藝術(shù)字msoTextBox17文本框msoDiagram21組織結(jié)構(gòu)圖或其他圖示表格 21MsoShapeType常量第6行代碼使用字符串變量FileName記錄需導(dǎo)出圖形的路徑和名稱。第7行代碼復(fù)制圖形,應(yīng)用于Shape對象的Copy方法將對象復(fù)制到剪貼板。第8行代碼使

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

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

21、的,被導(dǎo)出的文件的名稱。第10行代碼刪除新建的圖表。因為Chart對象是不能使用Delete方法直接刪除的,應(yīng)先使用Parent屬性返回指定對象的父對象,然后使用Delete方法刪除。技巧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 _#

22、006 (PresetTextEffect:=msoTextEffect15, _#007 Text:=我愛 Excel Home, FontName:=宋體, FontSize:=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#

23、017 With .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)#024 End With#025 End With#026 Set myShape = Nothing#027 End Sub代碼解析:TextEffect過程在工作表中插入藝術(shù)字并設(shè)置其格式。第3、4行代碼刪除工作表中可能存在的藝

24、術(shù)字,以免重復(fù)添加。第5行到第9行代碼使用AddTextEffect方法在工作表中插入藝術(shù)字,AddTextEffect方法創(chuàng)建藝術(shù)字對象。返回一個Shape對象,該對象代表新建的藝術(shù)字對象,語法如下:expression.AddTextEffect(PresetTextEffect, Text, FontName, FontSize, FontBold, FontItalic, Left, Top)參數(shù)expression是必需的,返回一個Shapes對象。參數(shù)PresetTextEffect是必需的,藝術(shù)字預(yù)置文本效果,可為MsoPresetTextEffect 常量之一,等同于在工作表中

25、插入藝術(shù)字時的樣式選項卡,如圖 551所示。圖 31藝術(shù)字樣式參數(shù)Text是必需的,藝術(shù)字對象中的文字。參數(shù)FontName是必需的,藝術(shù)字對象中所用的字體名稱。參數(shù)FontSize是必需的,以磅為單位給出藝術(shù)字對象中所用的字體大小。參數(shù)FontBold是必需的,在藝術(shù)字中要加粗的字體。參數(shù)FontItalic是必需的,在藝術(shù)字中要傾斜的字體。參數(shù)Left和參數(shù)Top是必需的,相對于文檔的左上角、頂部,以磅為單位給出藝術(shù)字對象邊框左上角的位置。第11行代碼將藝術(shù)字對象重命名為“myShape”。第12行到第16行代碼設(shè)置藝術(shù)字對象的填充格式。其中第13行代碼將填充格式設(shè)置為均一的顏色,應(yīng)用于F

26、illFormat 對象的Solid方法將指定的填充格式設(shè)置為均一的顏色,可用本方法將帶有漸進色、紋理、圖案或背景的填充格式轉(zhuǎn)換為單色的填充格式。第14行代碼設(shè)置填充的顏色。第15行代碼設(shè)置填充的透明度。第17行到第24行代碼設(shè)置藝術(shù)字對象的線條格式屬性。其中第18行代碼設(shè)置線條粗細,第19行代碼設(shè)置線條虛線樣式,第20行代碼設(shè)置線條區(qū)域的樣式,第21行代碼設(shè)置線條的透明度,第22行代碼設(shè)置前景色,第23行代碼設(shè)置填充背景的顏色。運行TextEffect過程工作表中如圖 552所示。圖 32工作表中插入藝術(shù)字技巧4 遍歷工作表中的圖形工作表中的多個圖形,如果使用系統(tǒng)缺省名稱,如“文本框1”、“

27、文本框2”這樣前面是固定的字符串,后面是序號的,可以使用For.Next 語句遍歷圖形,如下面的代碼所示。#001 Sub ErgShapes_1()#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屬性返回Shapes對象,代表工作表或圖形工作表上的所有圖

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

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

30、為文本框,應(yīng)用于Shape對象的Type屬性返回或設(shè)置圖形類型,MsoShapeType類型,請參閱表格 21 。第7行代碼根據(jù)返回的Type屬性值在所有的文本框內(nèi)寫入相應(yīng)的文本,如圖 561所示。圖 41遍歷所有的文本框技巧5 移動、旋轉(zhuǎn)圖片工作表中的圖片可以移動、旋轉(zhuǎn),如下面的代碼所示。#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 +

31、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 DoEvents#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è)置

32、為一個圓形的弧度值。Sin函數(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ù)為一個角,

33、并返回直角三角形兩邊的比值,該比值為角的鄰邊長度除以斜邊長度之商,將角度除以180后即能角度轉(zhuǎn)換為弧度。第8行代碼設(shè)置圖片填充的前景色隨著循環(huán)的過程不斷的變化。使用Fill屬性返回一個FillFormat對象,F(xiàn)illFormat對象代表圖形的填充格式,其ForeColor 屬性設(shè)置對象填充的前景色。第9行到第11行代碼在圖形移動的過程中使用IncrementRotation方法設(shè)置圖形繞 z 軸的轉(zhuǎn)角,IncrementRotation方法以指定的度數(shù)為增量,更改指定的圖形繞 z 軸的轉(zhuǎn)角,語法如下:expression.IncrementRotation(Increment)參數(shù)expre

34、ssion是必需的,返回一個Shape對象。參數(shù)Increment是必需的,以度為單位指定圖形在水平方向的旋轉(zhuǎn)量,正值使圖形按順時針方向旋轉(zhuǎn),負值使圖形按逆時針方向旋轉(zhuǎn)。其中第11行是關(guān)鍵的代碼,使用DoEvents函數(shù)轉(zhuǎn)讓控制權(quán),否則達不到預(yù)計的視覺效果。運行MoveShape過程,工作表的圖形在自身進行逆時針方向旋轉(zhuǎn)的同時沿著一個圓形的弧度進行移動,并不斷改變其填充的顏色。技巧6 工作表中自動插入圖片在日常工作中經(jīng)常需要在工作表中插入大量圖片,比如在如圖 581所示的工作表中需要根據(jù)A列的名稱在C列插入保存在同一目錄中的相應(yīng)的圖片,如果使用手工插入不僅非常繁瑣且極易出錯,而使用VBA代碼可

35、以很好的完成操作。圖 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 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.

36、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 - 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

37、 Then#025 MsgBox s & Chr(10) & 沒有照片!#026 End If#027 End Sub代碼解析:insertPic過程使用Insert方法在工作表中插入圖片。第7行代碼開始For.Next循環(huán),循環(huán)的終值由工作表中A列單元格的行數(shù)所決定。第8行代碼字符串變量FilPath保存A列名稱單元格所對應(yīng)的圖片文件的路徑和文件名,本例中圖片文件的文件名應(yīng)和A列中的名稱一致。第9行到第11行代碼使用Dir函數(shù)在同一文件夾中查找與A列單元格中的名稱相對應(yīng)的圖片文件,如果對應(yīng)的圖片文件存在則使用Insert方法將圖片插入到工作表中,并將C列的單元格賦給變量rng。Dir函數(shù)返回

38、一個String,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標相匹配。如果已沒有合乎條件的文件,則Dir函數(shù)會返回一個零長度字符串 ()。第12行到第17行代碼,當圖片片插入到工作表時其實是插入到活動單元格的,此時需設(shè)置圖片的Top屬性和Left屬性將圖片移動到C列所對應(yīng)的單元格中,并設(shè)置其Width屬性和Height屬性使其適應(yīng)所在單元格的大小。第18、19行代碼如果在同一文件夾中沒有與A列單元格對應(yīng)的圖片文件,則使用字符串變量s保存沒有圖片文件的名稱。第24行到第26行代碼如果字符串變量s不等于空白說明文件夾中缺少圖片文件,使用消息框提示。運行inser

39、tPic過程工作表如圖 582所示。圖 62插入圖片后的工作表如果文件夾中缺少對應(yīng)的圖片文件,則會進行提示,如圖 583所示。圖 63缺少圖片文件提示技巧7 固定工作表中圖形的位置工作表中插入的圖片,一般都是固定的尺寸和固定的單元格區(qū)域中的,但在實際使用中可能因一些人為的因素導(dǎo)致圖片位置偏移或尺寸變化,此時可以使用VBA代碼進行調(diào)整,如下面的代碼所示。#001 Sub ShapeAddress()#002 Dim rng As Range#003 Set rng = Sheet1.Range(B4:E22)#004 With Sheet1.Shapes(Picture 1)#005 .Rota

40、tion = 0#006 .Select#007 With Selection#008 .Top = rng(1).Top + 1#009 .Left = rng(1).Left + 1#010 .Width = rng.Width - 0.5#011 .Height = rng.Height - 0.5#012 End With#013 End With#014 Range(A1).Select#015 End Sub代碼解析:ShapeAddress過程調(diào)整指定圖形在工作表中的位置。第3行代碼變量rng保存工作表中插入圖片的單元格區(qū)域。第5行代碼設(shè)置圖片的轉(zhuǎn)角,應(yīng)用于Shape對象Rota

41、tion屬性以度為單位返回或設(shè)置圖形的轉(zhuǎn)角,設(shè)置為正值向右偏轉(zhuǎn),設(shè)置為負值向左偏轉(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”不管處于什么狀態(tài)都可以一鍵恢復(fù)其原來的大小、位置。技巧8 使用VBA自動生成圖表在實際工作中我們常用圖表來表現(xiàn)數(shù)據(jù)間的某種相對關(guān)系,一般采用手工插入的方式,而使用VBA代碼可以在工作表中自動生成圖表,如下面的示例代碼

42、。#001 Sub ChartAdd()#002 Dim myRange As Range#003 Dim myChart As ChartObject#004 Dim R As Integer#005 With Sheet1#006 .ChartObjects.Delete#007 R = .Range(A65536).End(xlUp).Row#008 Set myRange = .Range(A & 1 & :B & R)#009 Set myChart = .ChartObjects.Add(120, 40, 400, 250)#010 With myChart.Chart#011 .

43、ChartType = xlColumnClustered#012 .SetSourceData Source:=myRange, PlotBy:=xlColumns#013 .ApplyDataLabels ShowValue:=True#014 .HasTitle = True#015 .ChartTitle.Text = 圖表制作示例#016 With .ChartTitle.Font#017 .Size = 20#018 .ColorIndex = 3#019 .Name = 華文新魏#020 End With#021 With .ChartArea.Interior#022 .Col

44、orIndex = 8#023 .PatternColorIndex = 1#024 .Pattern = xlSolid#025 End With#026 With .PlotArea.Interior#027 .ColorIndex = 35#028 .PatternColorIndex = 1#029 .Pattern = xlSolid#030 End With#031 .SeriesCollection(1).DataLabels.Delete#032 With .SeriesCollection(2).DataLabels.Font#033 .Size = 10#034 .Colo

45、rIndex = 5#035 End With#036 End With#037 End With#038 Set myRange = Nothing#039 Set myChart = Nothing#040 End Sub代碼解析:ChartAdd過程在工作表中自動生成圖表,圖表類型為簇狀柱形圖。第6行代碼使用Delete方法刪除工作表中已經(jīng)存在的圖表,而ChartObjects方法返回代表工作表中單個嵌入圖表(ChartObject對象)或所有嵌入圖表的集合(ChartObjects對象)的對象,語法如下:expression.ChartObjects(Index)其中參數(shù)Index是可

46、選的,指定圖表的名稱或號碼。該參數(shù)可以是數(shù)組,用于指定多個圖表,因為示例中只有一個圖表,所以無需指定其Index參數(shù)。第8行代碼指定圖表的數(shù)據(jù)源。第9行代碼使用Add方法創(chuàng)建一個新圖表,應(yīng)用于ChartObjects對象的Add方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left, Top, Width, Height)參數(shù)Left、Top是必需的,以磅為單位給出新對象的初始坐標,該坐標是相對于工作表上單元格A1的左上角或圖表的左上角的坐標。參數(shù)Width、Height是必需,以磅為單位給出新對象的初始大小。第10行代碼使用Chart屬性返回新創(chuàng)建的圖表,應(yīng)用于ChartOb

47、ject對象的Chart屬性返回一個Chart對象,該對象代表指定對象所包含的圖表。第11行代碼指定新創(chuàng)建圖表的圖表類型,應(yīng)用于Chart對象的ChartType屬性返回或設(shè)置圖表的類型,可以為XlChartType常量之一,具體請參閱VBA幫助。本例中設(shè)置為xlColumnClustered即圖表類型為簇狀柱形圖。第12行代碼指定圖表的數(shù)據(jù)源和繪圖方式,應(yīng)用于Chart對象的SetSourceData方法為指定圖表設(shè)置源數(shù)據(jù)區(qū)域,語法如下:expression.SetSourceData(Source, PlotBy)參數(shù)expression是必需的,該表達式返回一個Chart對象。參數(shù)So

48、urce是可選的,源數(shù)據(jù)的區(qū)域。參數(shù)PlotBy是可選的,指定數(shù)據(jù)繪制方式,可為xlColumns(系列產(chǎn)生在列)或xlRows(系列產(chǎn)生在行)。第13行代碼使用ApplyDataLabels方法使圖表顯示數(shù)據(jù)標簽和數(shù)據(jù)點的值,應(yīng)用于Chart對象的ApplyDataLabels方法將數(shù)據(jù)標簽應(yīng)用于圖表中的某一數(shù)據(jù)點、某一數(shù)據(jù)系列或所有數(shù)據(jù)系列,語法如下:expression.ApplyDataLabels(Type, LegendKey, AutoText, HasLeaderLines, ShowSeriesName, ShowCategoryName, ShowValue, ShowPe

49、rcentage, ShowBubbleSize, Separator)參數(shù)expression是必需的,該表達式返回一個Chart對象。參數(shù)Type是可選的,要應(yīng)用的數(shù)據(jù)標簽的類型,可為表格 601所列的XlDataLabelsType 常量之一。常量值描述xlDataLabelsShowBubbleSizes6無xlDataLabelsShowLabelAndPercent5占總數(shù)的百分比及數(shù)據(jù)點所屬的分類。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowPercent3占總數(shù)的百分比。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowLabel4數(shù)據(jù)點所屬的分類。xlDataLabelsShowNone-4142無數(shù)據(jù)標簽。xlDataLabelsShowValue2數(shù)據(jù)點的值,若未指定本參數(shù),默認使用此設(shè)置。表格 81XlDataLabelsType 常量參數(shù)LegendKey是可選的,如果該值為True,則顯示數(shù)據(jù)點旁的圖例項標示。默認值為False。參數(shù)AutoText是可選的,如果對象根據(jù)內(nèi)容自動生成正確的文字,則該值為True。參數(shù)HasLeaderLines是可選的,如果數(shù)據(jù)系列具有引導(dǎo)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論