




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、VBA常用技巧代碼解析VBA常用技巧目錄VBA常用技巧1第4章 Shape (圖形)、Chart (圖表)對象 2技巧1在工作表中添加圖形 2技巧2導出工作表中的圖片 7技巧3在工作表中添加藝術(shù)字 9技巧4遍歷工作表中的圖形 11技巧5移動、旋轉(zhuǎn)圖片 13技巧6工作表中自動插入圖片 14技巧7固定工作表中圖形的位置 17技巧8使用VBA自動生成圖表 19技巧9使用獨立窗口顯示圖表 23技巧10導出工作表中的圖表 24技巧11多圖表制作251VBA常用技巧代碼解析第4章Shape (圖形)、Chart (圖表)對象技巧1在工作表中添加圖形如果需要在工作表中添加圖形對象,可以使用AddShape方
2、法,如下面的代碼所示。#001Sub AddShape()#002Dim myShape As Shape#003On Error Resume Next#004Sheet1.Shapes("myShape").Delete#005SetmyShape = Sheet1.Shapes.AddShape(msoShapeRectangle,40, 120,280,30)#006With myShape#007.Name = "myShape"#008With .TextFrame.Characters#009.Text ="單擊將選擇 Sheet
3、2!"#010With .Font#011.Name ="華文行楷"#012.FontStyle ="常規(guī)"#013.Size = 22#014.ColorIndex = 7#015End With#016End With#017With .TextFrame#018.HorizontalAlignment = -4108#019.VerticalAlignment = -4108#020End With#021.Placement = 3#022End With#023myShape.Select#024With Selection.Shap
4、eRange#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)#033End With#034With .Fill#035.Transparency = 0#036.Visible = msoTrue#037.ForeColor.SchemeColor =
5、 41#038.OneColorGradient 1,4, 0.23#039End With#040End With#041Sheet1.Range("A1").Select#042Sheet1.Hyperlinks.Add Anchor:=myShape, Address:="", _#043SubAddress:="Sheet2!A1", ScreenTip:="選擇 Sheet2!"#044Set myShape = Nothing#045End Sub代碼解析:AddShape過程在工作表中添加一個矩形并設(shè)
6、置其外觀等屬性。第2行代碼聲明變量myShape的對象類型。第3、4行代碼刪除可能存在的名稱為"myShape ”的圖形對象。第5行代碼使用 AddShape方法在工作表中添加一個矩形。當該方法應用于Shapes對象時,返回一個 Shape對象,該對象代表工作表中的新自選圖形,語法如下:expression.AddShape(Type, Left, Top, Width, Height)參數(shù)expression是必需的,返回一個 Shapes對象。參數(shù)Type是必需的,指定要創(chuàng)建的自選圖形的類型。參數(shù)Left和Top是必需的,以磅為單位給出自選圖形邊框左上角的位置。參數(shù)Width和H
7、eight是必需的,以磅為單位給出自選圖形邊框的寬度和高度。第7行代碼將新建圖形命名為"myShape ”,向Shapes集合添加新的圖形時,將對新添加的圖形賦以默認的名稱,若要為圖形指定更有意義的名稱,可指定其Name屬性。第8行到第16行代碼為矩形添加文字,并設(shè)定其格式。其中第8行代碼使用TextFrame屬性和Characters方法返回該矩形的字符區(qū)域。應用 于Shape對象的TextFrame 屬性返回一個 TextFrame 對象,該對象包含指定圖形對象的 對齊和定位屬性;Characters方法返回一個 Characters對象,該對象代表某個圖形的文本 框中的字符區(qū)域
8、,語法如下:expression.Characters(Start, Length)參數(shù)expression是必需的,返回一個指定文本框內(nèi)Characters對象的表達式。參數(shù)Start是可選的,表示將要返回的第一個字符,如果此參數(shù)設(shè)置為1或被忽略,則Characters方法會返回以第一個字符為起始字符的字符區(qū)域。參數(shù)Length是可選的,表示要返回的字符個數(shù)。如果此參數(shù)被忽略,則Characters方法會返回該字符串的剩余部分(由Start參數(shù)指定的字符以后的所有字符)。第9行代碼為矩形添加文字,應用于Characters對象的Text屬性返回或設(shè)置對象的文本,為可讀寫的 String類型。
9、第10行到第15行代碼設(shè)置矩形中文字的屬性,應用于 Characters對象Font屬性返 回一個Font對象,該對象代表指定對象的字體屬性(字體名稱、字體大小、字體顏色等),第11行代碼設(shè)置字體名稱, 第12行代碼設(shè)置字體樣式, 第13行代碼設(shè)置字體大小, 第14 行代碼顏色。第17行到第 20行代碼設(shè)定矩形中文字的對齊方式。應用于TextFrame對象的Horizo ntalAlig nment 屬性返回或設(shè)置指定對象的水平對齊方式,可為表格1-1所示的XlHAlign 常量之一。常量值描述xlHAlignCenter-4108居中xlHAIignCenterAcrossSelection
10、7靠左xlHAIignDistributed-4117分散對齊xlHAlignFill5分散對齊xlHAlignGeneral1靠左xlHAlignJustify-4130兩端對齊xlHAlignLeft-4131靠左xlHAlignRight-4152靠右表格 1-1 HorizontalAlignment屬性的 XlHAlign 常量應用于TextFrame對象的VerticalAlignment屬性返回或設(shè)置指定對象的垂直對齊方式, 可為表格1-2所示的XlHAlign常量之一。常量值描述xlVAlignCenter-4108居中xlVAlignJustify-4130兩端對齊xlVAl
11、ignBottom-4107靠下xlVAIignDistributed-4117分散對齊xlVAlignTop-4160靠上表格 1-2 VerticalAlignment屬性的 XlHAlign 常量Shape 對象的 Placement1-3 所示的 XlPlacement第21行代碼設(shè)置矩形大小和位置不隨單元格而變,應用于 屬性返回或設(shè)置對象與所在的單元格之間的附屬關(guān)系,可為表格 吊量之一。常量值描述xlFreeFloating3大小、位置均固定xlMove2大小固定、位置隨單元格而變xlMoveAndSize1大小、位置隨單元格而變表格 1-3 XlPlaceme nt 常量第24行到
12、第32行代碼設(shè)置矩形的邊框線條格式,應用于ShapeRange集合的Line屬性返回一個Lin eFormat對象,該對象包含指定圖形的線條格式屬性。其中第26行代碼設(shè)置矩形線條粗細,第27行代碼設(shè)置矩形線條的虛線樣式,第28行代碼設(shè)置矩形填充的透明度,第29行代碼設(shè)置矩形為可見,第30行代碼設(shè)置矩形的前景色,第31行代碼設(shè)置矩形填充背景的顏色。第33行到第38行代碼設(shè)置矩形的內(nèi)部填充格式,應用于 ShapeRange集合的Fill屬 性返回FillFormat對象,該對象包含指定的圖表或圖形的填充格式屬性。其中第35行代碼設(shè)置矩形內(nèi)部的透明度,第36行代碼設(shè)置矩形內(nèi)部為可見,第37行代碼設(shè)置
13、矩形內(nèi)部的前景色,第38行代碼將矩形內(nèi)部指定填充設(shè)為單色漸變,應用于FillFormat對象的OneColorGradient 方法將指定填充設(shè)為單色漸變,語法如下:expression.OneColorGradient(Style, Variant, Degree)其中參數(shù)Style是必需的,底紋樣式,可為表格2-1所示的MsoGradientStyle 常量之常量值描述msoGradientDiagonalDown4斜下msoGradientDiagonalUp3斜上msoGradientFromCenter7無msoGradientFromCorner5角部幅射msoGradientFr
14、omTitle6中心幅射msoGradientHorizontal1水平msoGradientMixed-2無msoGradientVertical2垂直表格 1-4 MsoGradie ntStyle 常量參數(shù)Variant是必需的,漸變變量。取值范圍為1到4之間,分別與 填充效果”對話框中“漸變”選項卡的四個漸變變量相對應。如果GradientStyle 設(shè)為 msoGradientFromCenter ,貝U Variant 參數(shù)只能設(shè)為 1 或 2。參數(shù)Degree是必需的,灰度。取值范圍為0.0 (表示最深)到 1.0 (表示最淺)之間。第42、43行代碼為矩形對象添加超鏈接,應用于
15、Hyperlinks對象的Add方法向指定的區(qū)域或圖形添加超鏈接,語法如下:expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)參數(shù)expression是必需的,返回一個 Hyperlinks對象。參數(shù)Anchor是必需的,超鏈接的位置。可為 Range對象或Shape對象。參數(shù)Address是必需的,超鏈接的地址。參數(shù)SubAddress是必需的,超鏈接的子地址。參數(shù)ScreenTip是可選的,當鼠標指針停留在超鏈接上時所顯示的屏幕提示。參數(shù)TextToDisplay是可選的,要顯示的超鏈接的文本。運行Ad
16、dShape過程結(jié)果如圖 1-1所示。技巧2導出工作表中的圖片有時需要將工作表中的圖形對象保存為單獨的圖像文件,可以使用Export方法將工作表中的圖片以文件形式導出,如下面的代碼所示。#001Sub ExportShp()#002Dim Shp As Shape#003Dim FileName As String#004For Each Shp In Sheet1.Shapes#005If Shp.Type = msoPicture Then#006FileName = ThisWorkbook.Path & "" & Shp.Name & &qu
17、ot;.gif"#007Shp.Copy#008WithSheet1.ChartObjects.Add(0,0, Shp.Width+ 28, Shp.Height+ 30).Chart#009.Paste#010.Export FileName, "gif"#011.Parent.Delete#012End With#013End If#014Next#015End Sub代碼解析:ExportShp過程將Sheetl工作表的所有圖片以文件形式導出到同一目錄中。第4行代碼使用For Each.Next 語句遍歷Sheetl工作表中的所有圖形。第5行代碼判斷圖形的
18、類型是否為圖片,應用于Shape對象的Type屬性返回或設(shè)置圖形類型,可以為表格2-1所示的MsoShapeType 常量之一。常量值說明msoShapeTypeMixed-2混合型圖形msoAutoShape1自選圖形msoCallout2沒有邊框線的標注msoChart3圖表msoComment4批注msoFreeform5任意多邊形msoGroup6圖形組合msoFormControl8窗體控件msoLine9線條msoLinkedOLEObject10鏈接式或內(nèi)嵌 OLE對象msoLinkedPicture11剪貼畫或圖片msoOLEControlObject12ActiveX 控件m
19、soPicture13圖片msoTextEffect15藝術(shù)字msoTextBox17文本框msoDiagram21組織結(jié)構(gòu)圖或其他圖示表格 2-1 MsoShapeType 常量第6行代碼使用字符串變量FileName記錄需導出圖形的路徑和名稱。第7行代碼復制圖形,應用于 Shape對象的Copy方法將對象復制到剪貼板。第8行代碼使用Add方法在工作表中添加一個圖表,應用于 Chartobjects對象的Add 方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left, Top, Width, Height)參數(shù)expression是必需的,返回一個 ChartObjects對
20、象。參數(shù)Left、參數(shù)Top是必需的,以磅為單位給出新對象的初始坐標,該坐標是相對于工作表上單元格A1的左上角或圖表的左上角的坐標。參數(shù)Width、參數(shù)Height是必需的,以磅為單位給出新對象的初始大小。第9行代碼使用Paste方法將圖形粘貼到新的嵌入圖表中,應用于Chart對象的Paste方法將剪貼板中的圖表數(shù)據(jù)粘貼到指定的圖表中,語法如下:expression.Paste(Type)參數(shù)expression是必需的,返回一個 Chart對象。參數(shù)Type是可選的的,如果剪貼板中有圖表,本參數(shù)指定要粘貼的圖表信息??蔀橐韵耎lPasteType 常量之一:xlFormats、xlFormu
21、las 或xlAll。默認值為 xlAll,如果剪貼板中 是數(shù)據(jù)不是圖表,則不能使用本參數(shù)。第10行代碼使用Export方法將圖表導出到同一目錄中,應用于 Chart對象的Export 方法以圖形格式導出圖表,語法如下:expression.Export(Filename, FilterName, Interactive)其中參數(shù)File name是必需的,被導出的文件的名稱。第10行代碼刪除新建的圖表。因為Chart對象是不能使用 Delete方法直接刪除的,應先使用Pare nt屬性返回指定對象的父對象,然后使用Delete方法刪除。技巧3在工作表中添加藝術(shù)字在工.作表中插入藝術(shù)字,可以使
22、用AddTextEffect方法,如下面的代碼所示。#001Sub TextEffect()#002Dim myShape As Shape#003On Error Resume Next#004Sheet1.Shapes("myShape").Delete#005Set myShape = Sheet1.Shapes.AddTextEffect _#006(PresetTextEffect:=msoTextEffect15, _#007Text:="我愛 Excel Home", FontName:="宋體", FontSize:=
23、36, _#008FontBold:=msoFalse, Fontltalic:=msoFalse, _#009Left:=100, Top:=100)#010With myShape#011.Name = "myShape"#012With .Fill#013.Solid#014.ForeColor.SchemeColor = 55#015.Transparency = 0#016End With#017With .Line#018.Weight = 1.5#019.DashStyle = msoLineSolid#020.Style = msoLineSingle#02
24、1.Transparency = 0#022.ForeColor.SchemeColor = 12#023.BackColor.RGB = RGB(255, 255, 255)#024End With#025End With#026Set myShape = Nothing#027End Sub代碼解析:TextEffect過程在工作表中插入藝術(shù)字并設(shè)置其格式。第3、4行代碼刪除工作表中可能存在的藝術(shù)字,以免重復添加。第5行到第9行代碼使用 AddT extEffect方法在工作表中插入藝術(shù)字,AddTextEffect方法創(chuàng)建藝術(shù)字對象。返回一個Shape對象,該對象代表新建的藝術(shù)字對象,語
25、法如下:expression.AddTextEffect(PresetTextEffect,Text,FontName,FontSize,FontBold, FontItalic, Left, Top)參數(shù)expression是必需的,返回一個Shapes對象。參數(shù)PresetTextEffect 是必需的,藝術(shù)字預置文本效果,可為MsoPresetT extEffect 常量之一,等同于在工作表中插入藝術(shù)字時的樣式選項卡,如圖3-1所示。圖3-1 藝術(shù)字樣式參數(shù)Text是必需的,藝術(shù)字對象中的文字。參數(shù)FontName是必需的,藝術(shù)字對象中所用的字體名稱。參數(shù)FontSize是必需的,以磅為
26、單位給出藝術(shù)字對象中所用的字體大小。參數(shù)FontBold是必需的,在藝術(shù)字中要加粗的字體。參數(shù)FontItalic是必需的,在藝術(shù)字中要傾斜的字體。參數(shù)Left和參數(shù)Top是必需的,相對于文檔的左上角、頂部,以磅為單位給出藝術(shù)字 對象邊框左上角的位置。第11行代碼將藝術(shù)字對象重命名為"myShape ”。第12行到第16行代碼設(shè)置藝術(shù)字對象的填充格式。其中第13行代碼將填充格式設(shè)置為均一的顏色,應用于 FillFormat對象的Solid方法將指定的填充格式設(shè)置為均一的顏色, 可用本方法將帶有漸進色、紋理、圖案或背景的填充格式轉(zhuǎn)換為單色的填充格式。第14行代碼設(shè)置填充的顏色。第15行
27、代碼設(shè)置填充的透明度。第17行到第24行代碼設(shè)置藝術(shù)字對象的線條格式屬性。其中第18行代碼設(shè)置線條粗細,第19行代碼設(shè)置線條虛線樣式,第 20行代碼設(shè)置線條區(qū)域的樣式,第 21行代碼設(shè)置 線條的透明度,第 22行代碼設(shè)置前景色,第 23行代碼設(shè)置填充背景的顏色。運行TextEffect過程工作表中如圖 3-2所示。技巧4遍歷工作表中的圖形工作表中的多個圖形,如果使用系統(tǒng)缺省名稱,如“文本框1 ”、“文本框2”這樣前面是固定的字符串,后面是序號的,可以使用ForNext語句遍歷圖形,如下面的代碼所示。#001Sub ErgShapes_1()#002Dim i As Integer#003For
28、 i = 1 To 4#004Sheet1.Shapes("文本框"& i).TextFrame.Characters.Text =""#005Next#006End Sub代碼解析:ErgShapes_1過程清除工作表中四個圖形文本框中的文字。第3行到第5行代碼,使用Shapes屬性在工作表上的三個圖形文本框中循環(huán)。Shapes屬性返回Shapes對象,代表工作表或圖形工作表上的所有圖形,可以使用Shapes ( index )返回單個的 Shape對象,其中index是圖形的名稱或索引號。返回單個的Shape對象后使用TextFrame屬性和
29、Characters方法清除文本框中的字符,關(guān)于Shape對象的TextFrame 屬性和Characters方法請參閱技巧 1。如果圖形的名稱沒有規(guī)律,可以使用For EachNext語句循環(huán)遍歷所有圖形,根據(jù)Type屬性返回的圖形類型進行相應的操作,如下面的代碼所示。#001 Sub ErgShapes_2()#002Dim myShape As Shape#003Dim i As Integer#004i = 1#005For Each myShape In Sheet1.Shapes#006If myShape.Type = msoTextBox Then#007myShape.Tex
30、tFrame.Characters.Text ="這是第"& i & "個文本框"#008i = i + 1#009End If#010Next#011 End Sub代碼解析:ErgShapes_2過程在工作表中的所有圖形文本框中寫入文本。第5行代碼使用For Each.Next 語句循環(huán)遍歷工作表中所有的圖形對象。第6行到第9行代碼如果圖形對象是文本框則在文本框中寫入文本。其中第6行代碼根據(jù)Type屬性判斷圖形對象是否為文本框,應用于Shape對象的Type屬性返回或設(shè)置圖形類型,MsoShapeType類型,請參閱表格2-1 。第7
31、行代碼根據(jù)返回的Type屬性值在所有的文本框內(nèi)寫入相應的文本,如圖4-1所示。ABCDE12這是第1個文本框345這是第2個文本眶678這是第3個文本框91011這是第4個文本框1213圖4-1遍歷所有的文本框技巧5移動、旋轉(zhuǎn)圖片工作表中的圖片可以移動、旋轉(zhuǎn),如下面的代碼所示。#001Sub MoveShape()#002Dim i As Long#003Dim j As Long#004With Sheet1.Shapes(1)#005For i = 1 To 3000 Step 5#006.Top = Sin(i * (3.1416 / 180) * 100 + 100#007丄 eft
32、= Cos(i * (3.1416 / 180) * 100 + 100#008.Fill.ForeColor.RGB = i * 100#009Forj = 1 To 10#010.IncrementRotation -2#011DoEvents#012Next#013Next#014End With#015End Sub代碼解析:MoveShape過程移動、旋轉(zhuǎn)工作表中的圖片并不斷改變其填充的前景色。第6行代碼設(shè)置圖片的 Top屬性值,應用于Shape對象的Top屬性設(shè)置圖形的頂端到 工作表頂端的距離。在循環(huán)的過程中使用Sin函數(shù)將Top屬性值設(shè)置為一個圓形的弧度值。Sin函數(shù)返回指定參數(shù)
33、的正弦值,語法如下:Sin(number)參數(shù)number表示一個以弧度為單位的角。Sin函數(shù)取一角度為參數(shù)值,并返回角的對邊長度除以斜邊長度的比值,將角度除以180后即能角度轉(zhuǎn)換為弧度。第7行代碼設(shè)置圖片的 Left屬性值,應用于Shape對象的Left屬性設(shè)置圖形從左邊界 至A列左邊界(在工作表中)或圖表區(qū)左邊界(在圖表工作表中)的距離。在循環(huán)的過程 中使用Cos函數(shù)將Left屬性值設(shè)置為一個圓形的弧度值。Cos函數(shù)返回指定一個角的余弦值,語法如下:Cos(number)參數(shù)number表示一個以弧度為單位的角。Cos函數(shù)的number參數(shù)為一個角,并返回直角三角形兩邊的比值,該比值為角的
34、鄰邊長度除以斜邊長度之商,將角度除以180后即能角度轉(zhuǎn)換為弧度。第8行代碼設(shè)置圖片填充的前景色隨著循環(huán)的過程不斷的變化。使用Fill屬性返回一個FillFormat對象,F(xiàn)illFormat對象代表圖形的填充格式,其 ForeColor屬性設(shè)置對象填充的 前景色。第9行到第11行代碼在圖形移動的過程中使用In creme ntRotation 方法設(shè)置圖形繞 z軸的轉(zhuǎn)角,In creme ntRotation 方法以指定的度數(shù)為增量,更改指定的圖形繞z軸的轉(zhuǎn)角,語法如下:expression.lncrementRotation(lncrement)參數(shù)expression是必需的,返回一個Sh
35、ape對象。參數(shù)In creme nt是必需的,以度為單位指定圖形在水平方向的旋轉(zhuǎn)量,正值使圖形按順時針方向旋轉(zhuǎn),負值使圖形按逆時針方向旋轉(zhuǎn)。其中第11行是關(guān)鍵的代碼,使用DoEvents函數(shù)轉(zhuǎn)讓控制權(quán),否則達不到預計的視覺效果。運行MoveShape過程,工作表的圖形在自身進行逆時針方向旋轉(zhuǎn)的同時沿著一個圓形 的弧度進行移動,并不斷改變其填充的顏色。技巧6工作表中自動插入圖片在日常工作中經(jīng)常需要在工作表中插入大量圖片,比如在如圖6-1所示的工作表中需要根據(jù)A列的名稱在C列插入保存在同一目錄中的相應的圖片,如果使用手工插入不僅非 常繁瑣且極易出錯,而使用VBA代碼可以很好的完成操作。ft&am
36、p;即I1狗狗檔案2.嗚號3Ll001j0025003圖6-1需插入圖片的工作表示例代碼如下:#001Sub insertPic()#002Dim i As Integer#003Dim FilPath As String#004Dim rng As Range#005Dim s As String#006With Sheet1#007For i = 3 To .Range("a65536").End(xlUp).Row#008FilPath= ThisWorkbook.Path& ""& .Cells(i,1).Text& &q
37、uot;.jpg"#009If Dir(FilPath) <> "" Then#010.Pictures.lnsert(FilPath).Select#011Set rng = .Cells(i, 3)#012With Selection#013.Top = rng.Top + 1#014.Left = rng.L eft + 1#015.Width = rng.Width - 1#016.Height = rng.Height - 1#017End With#018Else#019s = s & Chr(10) & .Cells(i,
38、 1).Text#020End If#021Next#022.Cells(3, 1).Select#023End With#024If s <> "" Then#025MsgBox s & Chr(10) & "沒有照片!"#026End If#027End Sub代碼解析:insertPic過程使用Insert方法在工作表中插入圖片。第7行代碼開始For.Next循環(huán),循環(huán)的終值由工作表中A列單元格的行數(shù)所決定。第8行代碼字符串變量FilPath保存A列名稱單元格所對應的圖片文件的路徑和文件名,本例中圖片文件的文件名應和A列
39、中的名稱一致。第9行到第11行代碼使用Dir函數(shù)在同一文件夾中查找與A列單元格中的名稱相對應的圖片文件,如果對應的圖片文件存在則使用Insert方法將圖片插入到工作表中,并將C列的單元格賦給變量rng。Dir函數(shù)返回一個 String,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定 的模式或文件屬性、或磁盤卷標相匹配。如果已沒有合乎條件的文件,則Dir函數(shù)會返回一個零長度字符串(”)。第12行到第17行代碼,當圖片片插入到工作表時其實是插入到活動單元格的,此時 需設(shè)置圖片的 Top屬性和Left屬性將圖片移動到C列所對應的單元格中,并設(shè)置其Width屬性和Height屬性使其適應所在單元
40、格的大小。第18、19行代碼如果在同一文件夾中沒有與A列單元格對應的圖片文件,則使用字符串變量s保存沒有圖片文件的名稱。第24行到第26行代碼如果字符串變量s不等于空白說明文件夾中缺少圖片文件,使用消息框提示。運行insertPic過程工作表如圖 6-2所示。1駒狗檔案¥洞號3001陰_200Z450036狗g004'J圖6-2 插入圖片后的工作表如果文件夾中缺少對應的圖片文件,則會進行提示,如圖6-3所示。AB£1駒狗檔案:-名轅國號001礴_20024$003朋_4004;4 iRFCiaatt Eincl_2<.圖6-3缺少圖片文件提示技巧7固定工作表中
41、圖形的位置工作表中插入的圖片, 一般都是固定的尺寸和固定的單元格區(qū)域中的, 可能因一些人為的因素導致圖片位置偏移或尺寸變化,此時可以使用 如下面的代碼所示。但在實際使用中VBA代碼進行調(diào)整,#001Sub ShapeAddress()#002Dim rng As Range#003Set rng = Sheet1.Range("B4:E22")#004With Sheet1.Shapes( "P icture 1")#005.Rotation = 0#006.Select#007With Selection#008.Top = rng(1).Top +
42、1#009.Left = rng(1) .Left + 1#010.Width = rng.Width - 0.5#011.Height = rng.Height - 0.5#012End With#013End With#014Range("A1").Select#015End Sub代碼解析:ShapeAddress過程調(diào)整指定圖形在工作表中的位置。第3行代碼變量rng保存工作表中插入圖片的單元格區(qū)域。第5行代碼設(shè)置圖片的轉(zhuǎn)角,應用于 Shape對象Rotation屬性以度為單位返回或設(shè)置 圖形的轉(zhuǎn)角,設(shè)置為正值向右偏轉(zhuǎn),設(shè)置為負值向左偏轉(zhuǎn),設(shè)置為零圖片則保持 90度垂
43、直。第7行到第12行代碼設(shè)置圖片的 Top屬性和Left屬性將圖片移動到變量 rng所保存的 單元格區(qū)域中,并設(shè)置其Width屬性和Height屬性使其適應所在單元格區(qū)域的大小。第14行代碼選擇A1單元格,不然圖片會處于選中狀態(tài)。經(jīng)過以上設(shè)置,工作表中的圖片“ Picture 1 ”不管處于什么狀態(tài)都可以一鍵恢復其原來 的大小、位置。技巧8使用VBA自動生成圖表在實際工作中我們常用圖表來表現(xiàn)數(shù)據(jù)間的某種相對關(guān)系,一般采用手工插入的方式, 而使用VBA代碼可以在工作表中自動生成圖表,如下面的示例代碼。#001Sub ChartAdd()#002Dim myRange As Range#003Di
44、m myChart As Chartobject#004Dim R As Integer#005With Sheet1#006.ChartObjects.Delete#007R = .Range("A65536").End(xlUp).Row#008Set myRange = .Range("A" & 1 & ":B" & R)#009Set myChart = .ChartObjects.Add(120, 40, 400, 250)#010With myChart.Chart#011.ChartType =
45、xlColumnClustered#012.SetSourceData Source:=myRange, PlotBy:=xlColumns#013.ApplyDataLabels ShowValue:=True#014.HasTitle = True#015.ChartTitle.Text ="圖表制作示例"#016With .ChartTitle.Font#017.Size = 20#018.ColorIndex = 3#019.Name ="華文新魏"#020End With#021With .ChartArea.Interior#022.Colo
46、rIndex = 8#023.PatternColorIndex = 1#024.Pattern = xlSolid#025End With#026With .PlotArea.Interior#027.ColorIndex = 35#028.PatternColorIndex = 1#029.Pattern = xlSolid#030End With#031.SeriesCollection(1).DataLabels.Delete#032With .SeriesCollection(2).DataLabels.Font#033.Size = 10#034.ColorIndex = 5#03
47、5End With#036End With#037End With#038Set myRange = Nothing#039Set myChart = Nothing#040End Sub代碼解析:ChartAdd過程在工作表中自動生成圖表,圖表類型為簇狀柱形圖。第6行代碼使用Delete方法刪除工作表中已經(jīng)存在的圖表,而Chartobjects方法返回代表工作表中單個嵌入圖表( Chartobject對象)或所有嵌入圖表的集合( Chartobjects對 象)的對象,語法如下:expression.ChartObjects(lndex)其中參數(shù)Index是可選的,指定圖表的名稱或號碼。該參
48、數(shù)可以是數(shù)組,用于指定多個圖表,因為示例中只有一個圖表,所以無需指定其Index參數(shù)。第8行代碼指定圖表的數(shù)據(jù)源。第9行代碼使用 Add方法創(chuàng)建一個新圖表,應用于ChartObjects對象的Add方法創(chuàng)建新的嵌入圖表,語法如下:expression.Add(Left, Top, Width, Height)參數(shù)Left、Top是必需的,以磅為單位給出新對象的初始坐標,該坐標是相對于工作表 上單元格A1的左上角或圖表的左上角的坐標。參數(shù)Width、Height是必需,以磅為單位給出新對象的初始大小。第10行代碼使用 Chart屬性返回新創(chuàng)建的圖表,應用于 ChartObject對象的Chart
49、屬 性返回一個Chart對象,該對象代表指定對象所包含的圖表。第11行代碼指定新創(chuàng)建圖表的圖表類型,應用于Chart對象的ChartType屬性返回或設(shè)置圖表的類型,可以為 XlChartType 常量之一,具體請參閱 VBA幫助。本例中設(shè)置為 xlColu mn Clustered 即圖表類型為簇狀柱形圖。第12行代碼指定圖表的數(shù)據(jù)源和繪圖方式,應用于 Chart對象的SetSourceData 方法為指定圖表設(shè)置源數(shù)據(jù)區(qū)域,語法如下:expression.SetSourceData(Source, PlotBy)參數(shù)expression是必需的,該表達式返回一個Chart對象。參數(shù)Sour
50、ce是可選的,源數(shù)據(jù)的區(qū)域。參數(shù)PlotBy是可選的,指定數(shù)據(jù)繪制方式, 可為xlColumns (系列產(chǎn)生在列)或xlRows (系列產(chǎn)生在行)。第13行代碼使用 ApplyDataLabels方法使圖表顯示數(shù)據(jù)標簽和數(shù)據(jù)點的值,應用于Chart對象的ApplyDataLabels方法將數(shù)據(jù)標簽應用于圖表中的某一數(shù)據(jù)點、某一數(shù)據(jù)系列或所有數(shù)據(jù)系列,語法如下:expression.ApplyDataLabels(Type,LegendKey,AutoText,HasLeaderLines,ShowSeriesName,ShowCategoryName,ShowValue,ShowPercent
51、age,ShowBubbleSize,Separator)參數(shù)expression是必需的,該表達式返回一個 Chart對象。參數(shù)Type是可選的,要應用的數(shù)據(jù)標簽的類型,可為表格8-1所列的XIDataLabelsType常量之一。常量值描述xlDataLabelsShowBubbleSizes6無xlDataLabelsShowLabelAndPercent5占總數(shù)的百分比及數(shù)據(jù)點所屬的分類。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowPercent3占總數(shù)的百分比。僅用于餅圖或圓環(huán)圖。xlDataLabelsShowLabel4數(shù)據(jù)點所屬的分類。xlDataLabelsShowN
52、one-4142無數(shù)據(jù)標簽。xlDataLabelsShowValue2數(shù)據(jù)點的值,若未指定本參數(shù),默認使用此設(shè)置。表格 8-1 XlDataLabelsType 常量參數(shù)LegendKey是可選的,如果該值為True,則顯示數(shù)據(jù)點旁的圖例項標示。默認值為 False。參數(shù)AutoT ext是可選的,如果對象根據(jù)內(nèi)容自動生成正確的文字,則該值為True。參數(shù)HasLeaderLines 是可選的,如果數(shù)據(jù)系列具有引導線,則該值為True。參數(shù)ShowSeriesName 是可選的,數(shù)據(jù)標簽的系列名稱。參數(shù)ShowCategoryName是可選的,數(shù)據(jù)標簽的分類名稱。參數(shù)ShowValue是可選的,數(shù)據(jù)標簽的值。參數(shù)ShowPercentage 是可選的,數(shù)據(jù)標簽的百分比。參數(shù)ShowBubbleSize 是可選的,數(shù)據(jù)標簽的氣泡尺寸。參數(shù)Separator是可選的,數(shù)據(jù)標簽的分隔符。第14、15行代
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年審計實務試題及答案
- 2023年中國能建部分所屬企業(yè)領(lǐng)導人員招聘(競聘)筆試參考題庫附帶答案詳解
- 白酒釀造過程中的工藝傳承與創(chuàng)新考核試卷
- 紙張油墨吸收性考核試卷
- 皮革護理的文化價值傳播與推廣考核試卷
- 2024年微生物檢驗技師考試指導及試題及答案
- 棉花倉儲員工職業(yè)素養(yǎng)培訓考核試卷
- 糧油市場渠道開發(fā)與維護策略考核試卷
- 相機拍攝模式創(chuàng)新與應用考核試卷
- 2024年項目管理軟技能的重要性試題及答案
- 海關(guān)AEO培訓法律法規(guī)
- 豬舍出租合同協(xié)議
- 沖壓模具制作合同范例
- 學校會計崗位試題及答案
- 湖北省武漢市2025屆高中畢業(yè)生四月調(diào)研考試數(shù)學試卷及答案(武漢四調(diào))
- 《結(jié)膜炎診斷與治療》課件
- 智慧廣場《移多補少問題》(教學設(shè)計)-2024-2025學年一年級數(shù)學上冊青島版
- 2025東風汽車校招人才測評題庫
- 2024年四川宜賓五糧液股份有限公司招聘筆試真題
- 吉林2025年03月長春新區(qū)面向社會公開選聘8名各產(chǎn)業(yè)招商辦公室負責人筆試歷年典型考題(歷年真題考點)解題思路附帶答案詳解
- 微風發(fā)電項目可行報告
評論
0/150
提交評論