Excel_VBA_处理图形图表
Excel-VBA-处理图形图表大全剖析

Excel-VBA-处理图形图表大全剖析VBA 一、图表各元素在VBA中的表达方式1、图表区VBA名称:ChartArea2、绘图区VBA名称:PlotArea调整绘图区的大小以及在图表中的位置,指定绘图区的Top、Left、Height和Width属性。
3、数据系列VBA名称:Series指定给定系列语法:ChatObject.SeriesCollection(Index),其中Index是数字范围,从1开始,最大值是图表中系列的数量或系列名称的数量。
4、图表轴VBA名称:Axis指定给定轴的简单语法:ChatObject.Axes(Type),其中Type指定轴的Excel VBA常量。
辅助轴语法:ChatObject.Axes(Type,AxisGroup)。
5、网格线VBA名称:HasMajorGridlines和HasMinorGridlines 根据需要可以选择显示或者不显示主要网格线或次要网格线。
若显示网格线,可以设置线条的图案(颜色、线宽、线条样式等等)。
6、数据标签VBA名称:DataLabels和DataLabel(1)图表中所有系列的所有点显示特定类型的数据标签或不显示数据标签: ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone(2)特定系列显示数值(Y)作为数据标签:With ActiveChart.SeriesCollection(“Xdata”).HasDataLabels=True.ApplyDataLabels Type:=xlDataLabelsShowValue End With(3)特定的点在它的数据标签中显示文字With ActiveChart.SeriesCollection(“Xdata”).Points(1).HasDataLabels=True.DataLabel.Text=”MyLabel”End With(4)将公式放置在某个系列上的某特定点的数据标签中(在公式中需使用RC样式) With ActiveChart.SeriesCollection(“Xdata”).point(1) .HasDataLabels=True.DataLabel.Text=”Sheet1.R1C1”End With7、图表标题、图例和数据表VBA名称:ChartTitle、HasLegend和HasDataTable 可以用VBA指定图表标题和图例的位置、文字和文字格式。
Excel VBA_批量自动制图表实例集锦

1, 自动生成图表‘/thread-1058346-1-1.html‘统计报告0925a.xls‘2013-9-25Sub lqxs()Dim Arr, ks, js, nm1$, nm2$, dz1$, dz2$Dim dz$, dz3$, yy$, nm$Application.ScreenUpdating = FalseSheet3.ActivateArr = [a1].CurrentRegionks = 3: js = UBound(Arr) - 1nm = yy = Left(nm, Len(nm) - 3)nm1 = "图表6"nm2 = "图表4"dz = "A2:B" & js & ",D2:E" & jsActiveSheet.ChartObjects(nm1).ActivateWith ActiveChart.SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:=xlColumns.SeriesCollection(1).Selectdz1 = "R3C2:R" & js & "C2".SeriesCollection(1).Values = "='" & nm & "'!" & dz1dz2 = "R3C4:R" & js & "C4".SeriesCollection(2).Values = "='" & nm & "'!" & dz2dz3 = "R3C5:R" & js & "C5".SeriesCollection(3).Values = "='" & nm & "'!" & dz3.ChartTitle.SelectSelection.Characters.Text = yy & "月份合格率"End WithActiveSheet.ChartObjects(nm2).ActivateWith ActiveChart.ChartArea.Selectdz = "H2:T2,H" & js + 1 & ":T" & js + 1.SetSourceData Source:=Sheets(nm).Range(dz), PlotBy:= _xlRowsdz2 = "R" & js + 1 & "C8:R" & js + 1 & "C20".SeriesCollection(1).Values = "='" & nm & "'!" & dz2.ChartTitle.SelectSelection.Characters.Text = yy & "月份不良趋势统计"End WithRange("A" & ks).SelectApplication.ScreenUpdating = True MsgBox "OK"End Sub2, 批量插入图表‘2010-9-27‘批量绘图表.xlsSub ChartsAdd()Dim myChart As ChartObjectDim i As IntegerDim R As IntegerDim m As IntegerR = Sheet1.Range("A65536").End(xlUp).Row - 1m = Abs(Int(-(R / 4)))Sheet2.ChartObjects.DeleteFor i = 1 To RSet myChart = Sheet2.ChartObjects.Add _(Left:=(((i - 1) Mod m) + 1) * 350 - 320, _Top:=((i - 1) \ m + 1) * 220 - 210, _Width:=330, Height:=210)With myChart.Chart.ChartType = xlColumnClustered.SetSourceData Source:=Sheet1.Range("B2:M2").Offset(i - 1), _PlotBy:=xlRowsWith .SeriesCollection(1).XValues = Sheet1.Range("B1:M1").Name = Sheet1.Range("A2").Offset(i - 1).ApplyDataLabels AutoText:=True, ShowValue:=True.DataLabels.Font.Size = 10End With.HasLegend = FalseWith .ChartTitle.Left = 5.Top = 1.Font.Size = 14 = "华文行楷"End WithWith .PlotArea.Interior.ColorIndex = 2.PatternColorIndex = 1.Pattern = xlSolidEnd With.Axes(xlCategory).TickLabels.Font.Size = 10.Axes(xlValue).TickLabels.Font.Size = 10End WithNextSheet2.SelectSet myChart = NothingEnd Sub3, 批量插入图表‘2013-9-30‘/forum.php?mod=viewthread&tid=1059674&page=1#pid7221588Sub OpenFiles()Dim myX As RangeDim myY As RangeDim i%, j&Application.ScreenUpdating = FalseActiveSheet.ChartObjects("图表1").ActivateFor i = 1 To ActiveChart.SeriesCollection.Count ‘序列集合对象的用法ActiveChart.SeriesCollection(i).Delete ‘删除原有的序列NextWith ActiveChart.Axes(xlCategory).MaximumScale = 100.MinimumScale = 0.MajorUnit = 20.MinorUnit = 4End WithWith ActiveChart.ChartType = xlXYScatterLinesNoMarkers ‘散点图For i = 1 To Sheet1.Range("IV1").End(xlToLeft).Column + 1 Step 2j = Sheet1.Range("A65536").Offset(0, i - 1).End(xlUp).RowSet myX = Sheet1.Cells(4, i).Resize(j - 3, 1)Set myY = myX.Offset(0, 1)With .SeriesCollection.NewSeries.Values = myY.XV alues = myX.Name = Sheet1.Cells(1, i).Value ‘序列名.MarkerStyle = -4142 ‘没有标志显示End WithNext iEnd With[a1].SelectApplication.ScreenUpdating = TrueEnd Sub4, 图表对象您可以结合使用Add 方法和ChartWizard 方法,添加包含工作表数据的新图表。
如何在VBA中处理图表和图形对象

如何在VBA中处理图表和图形对象图表和图形对象在VBA中是非常有用的工具,可以帮助我们更好地可视化数据和信息。
通过 VBA,我们可以在 Microsoft Excel 中创建、操作和自定义图表和图形对象。
本文将探讨如何在 VBA 中处理图表和图形对象的一些核心功能和常见应用。
首先,我们需要了解如何在 VBA 中创建图表和图形对象。
要创建一个图表对象,我们可以使用 `Charts.Add` 方法。
这个方法将返回一个新创建的图表对象,我们可以使用它来进一步操作和自定义图表。
例如,我们可以设置图表的标题、轴标签和数据区域,以及选择合适的图表类型等。
以下是一个示例代码,展示了如何在 VBA 中创建一个基本的柱状图:```vbaSub CreateChart()Dim ws As WorksheetDim cht As ChartObjectSet ws = ThisWorkbook.Worksheets("Sheet1")Set cht = ws.ChartObjects.Add(Left:=100, Top:=100, Width:=400, Height:=300)With cht.Chart.SetSourceData Source:=ws.Range("A1:B10").ChartType = xlColumnClustered.HasTitle = True.ChartTitle.Text = "Sales Report".SetElement (msoElementChartTitleAboveChart).Axes(xlCategory, xlPrimary).HasTitle = True.Axes(xlCategory, xlPrimary).AxisTitle.Text = "Month".Axes(xlValue, xlPrimary).HasTitle = True.Axes(xlValue, xlPrimary).AxisTitle.Text = "Sales Amount"End WithEnd Sub```上述代码中,我们首先定义了一个工作表对象 `ws` 和一个图表对象 `cht`。
VBA 批量调整excel图表格式 线条粗细

Excel 画图时默认的线条和标记比较大,写论文时使用起来经常要把线条和标记调小才好看。
如果图表比较多,图里的系列也比较多的话,一条一条的设置起来会很麻烦,这里给出了一个宏,使用方法是选中图表后运行宏即可。
Sub zoom()
'
' zoom 宏
'
' ActiveSheet.ChartObjects("图表1").Activate '1可以改为循环整数
Dim i As Integer
For i = 1 To ActiveChart.SeriesCollection.Count
ActiveChart.SeriesCollection(i).Select
Selection.MarkerSize = 3 '设置标记大小为3
With Selection.Format.Line
.Visible = msoTrue
.Weight = 1.25 '设置线条粗细为1.25
End With
Next
End Sub
可以根据自己的需求更改标记的大小和线条的粗细。
当然如果需要对所有图表做这种更改,可以找出图表个数,对ActiveSheet.ChartObjects("图表i").Activate 进行外围循环即可。
通过VBA实现Excel数据报表的制作方法

通过VBA实现Excel数据报表的制作方法Excel是一个功能强大的电子表格应用程序,可以用来处理和分析数据。
在Excel中,使用VBA(Visual Basic for Applications)语言可以自动化执行各种任务和操作。
通过VBA,我们可以实现Excel数据报表的制作方法,提高工作效率和准确性。
本文将介绍通过VBA实现Excel数据报表的步骤和技巧。
首先,需要了解VBA编程语言的基本知识。
VBA是一种基于Microsoft Visual Basic的编程语言,可以用于编写Excel宏。
在Excel菜单栏上,选择“开发”选项卡,然后点击“Visual Basic”图标,即可进入VBA编辑器。
在VBA编辑器中,可以编写和编辑宏代码。
接下来,我们将探讨几种常用的VBA编程技巧,以实现Excel数据报表的制作方法。
第一种方法是使用VBA自动创建并格式化表格。
在VBA编辑器中,可以使用Range对象和Cells属性来指定单元格范围和位置。
例如,可以使用Cells(row, column)来指定特定单元格的位置,并使用Range("A1:G10")来指定一个单元格区域。
通过设置单元格的值、字体、颜色等属性,可以实现表格的自动创建和格式化。
第二种方法是使用VBA自动填充数据。
通过循环和条件语句,在VBA中可以自动获取数据源,并将数据填充到指定的单元格中。
例如,可以使用For循环来遍历数据源,并使用If语句来判断数据的条件,然后将符合条件的数据填充到相应的单元格中。
这样可以快速、准确地填充大量数据。
第三种方法是使用VBA自动计算和统计数据。
通过对数据进行加减乘除等运算,并使用函数来进行统计和分析,可以实现数据报表的自动计算。
例如,可以使用Sum函数来计算一列数据的总和,使用Average函数来计算平均值,使用Count函数来统计某个条件下的数据数量等。
通过编写相应的VBA代码,可以根据需要自动计算和统计各种数据指标。
VBA中的图像处理与绘图方法

VBA中的图像处理与绘图方法VBA(Visual Basic for Applications)是一种用于宏编程的编程语言,适用于各种Microsoft Office应用程序,如Excel、Word和PowerPoint等。
在VBA中,我们可以利用其丰富的图像处理与绘图方法来处理和操作图像,实现各种图像处理任务。
本文将介绍VBA 中常用的图像处理与绘图方法,以帮助你更好地使用这些技术。
1.插入与调整图片在VBA中,我们可以使用`Shapes.AddPicture`方法来插入图片。
该方法需要输入图片的文件路径和位置参数,可以将图片插入到指定位置的工作表或幻灯片中。
可以使用`Left`和`Top`参数来指定图片的左上角位置,使用`Width`和`Height`来调整图片的大小。
示例代码:```vbaSub InsertPicture()Dim ws As WorksheetSet ws = ThisWorkbook.Worksheets("Sheet1")Dim pic As PictureSet pic = ws.Shapes.AddPicture("C:\path\to\image.jpg", msoFalse, msoTrue, 100, 100, 200, 200)' 调整图片大小pic.ShapeRange.LockAspectRatio = msoFalsepic.ShapeRange.Width = 300pic.ShapeRange.Height = 300End Sub```2.图片格式处理在VBA中,我们可以通过修改图片对象的属性来实现对图片的格式处理。
这包括调整图片的亮度、对比度、透明度等。
例如,我们可以通过修改`PictureFormat.Brightness`和`PictureFormat.Contrast`属性来调整图片的亮度和对比度。
ExcelVBA编程与图表制作如何利用VBA进行图表的自动生成和美化

ExcelVBA编程与图表制作如何利用VBA进行图表的自动生成和美化Excel VBA编程与图表制作如何利用VBA进行图表的自动生成和美化在Excel中,图表是一种直观展示数据的形式,它能够帮助用户更清晰地理解数据的含义和趋势。
而VBA(Visual Basic for Applications)作为Excel的编程语言,可以让我们更加灵活地操作和处理数据,进而实现图表的自动生成和美化。
本文将介绍如何利用VBA编程进行图表的自动生成和美化。
一、自动生成图表自动生成图表的主要目的是为了提高工作效率,将重复性的操作变得简单和便捷。
通过VBA编程,我们可以实现一键生成图表的功能。
首先,打开Excel,并按下ALT+F11快捷键,进入VBA编辑器。
在VBA编辑器中,选择插入→模块,即可新建一个VBA模块。
然后,我们可以编写VBA代码来实现图表的自动生成。
以下是一个简单的示例代码:```Sub CreateChart()Dim chartSheet As WorksheetDim sheet As WorksheetDim chartObj As ChartObjectDim rng As Range'创建一个新的图表工作表Set chartSheet =ThisWorkbook.Sheets.Add(After:=ThisWorkbook.Sheets(ThisWorkbook.Sh eets.Count)) = "Chart Sheet"'选择需要生成图表的原始数据所在的工作表Set sheet = ThisWorkbook.Sheets("Data Sheet")'选择需要生成图表的原始数据范围Set rng = sheet.Range("A1:B10")'在图表工作表上插入一个图表对象Set chartObj = chartSheet.ChartObjects.Add(Left:=10, Width:=375, Top:=30, Height:=225)'将原始数据范围设置为图表的源数据chartObj.Chart.SetSourceData rng'设置图表的类型为柱形图chartObj.Chart.ChartType = xlColumnClusteredEnd Sub```以上代码中,我们首先创建一个新的图表工作表,然后选择需要生成图表的原始数据所在的工作表和对应的数据范围。
Excel-VBA-处理图形图表大全剖析

VBA图表剖析一、图表各元素在VBA中的表达方式1、图表区VBA名称:ChartArea2、绘图区VBA名称:PlotArea调整绘图区的大小以及在图表中的位置,指定绘图区的Top、Left、Height和Width属性。
3、数据系列VBA名称:Series指定给定系列语法:ChatObject.SeriesCollection(Index),其中Index是数字范围,从1开始,最大值是图表中系列的数量或系列名称的数量。
4、图表轴VBA名称:Axis指定给定轴的简单语法:ChatObject.Axes(Type),其中Type指定轴的Excel VBA常量。
辅助轴语法:ChatObject.Axes(Type,AxisGroup)。
5、网格线VBA名称:HasMajorGridlines和HasMinorGridlines根据需要可以选择显示或者不显示主要网格线或次要网格线。
若显示网格线,可以设置线条的图案(颜色、线宽、线条样式等等)。
6、数据标签VBA名称:DataLabels和DataLabel(1)图表中所有系列的所有点显示特定类型的数据标签或不显示数据标签:ActiveChart.ApplyDataLabels Type:=xlDataLabelsShowNone(2)特定系列显示数值(Y)作为数据标签:With ActiveChart.SeriesCollection(“Xdata”).HasDataLabels=True.ApplyDataLabels Type:=xlDataLabelsShowValueEnd With(3)特定的点在它的数据标签中显示文字With ActiveChart.SeriesCollection(“Xdata”).Points(1).HasDataLabels=True.DataLabel.Text=”MyLabel”End With(4)将公式放置在某个系列上的某特定点的数据标签中(在公式中需使用RC样式) With ActiveChart.SeriesCollection(“Xdata”).point(1).HasDataLabels=True.DataLabel.Text=”Sheet1.R1C1”End With7、图表标题、图例和数据表VBA名称:ChartTitle、HasLegend和HasDataTable可以用VBA指定图表标题和图例的位置、文字和文字格式。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Shape(图形)、Chart(图表)对象在工作表中添加图形如果需要在工作表中添加图形对象,可以使用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 With .TextFrame.Characters#009 .Text = "单击将选择Sheet2!"#010 With .Font#011 .Name = "华文行楷"#012 .FontStyle = "常规"#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#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 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过程在工作表中添加一个矩形并设置其外观等属性。
第2行代码声明变量myShape的对象类型。
第3、4行代码删除可能存在的名称为“myShape”的图形对象。
第5行代码使用AddShape方法在工作表中添加一个矩形。
当该方法应用于Shapes对象时,返回一个Shape对象,该对象代表工作表中的新自选图形,语法如下:expression.AddShape(Type, Left, Top, Width, Height)参数expression是必需的,返回一个Shapes对象。
参数Type是必需的,指定要创建的自选图形的类型。
参数Left和Top是必需的,以磅为单位给出自选图形边框左上角的位置。
参数Width和Height是必需的,以磅为单位给出自选图形边框的宽度和高度。
第7行代码将新建图形命名为“myShape”,向Shapes集合添加新的图形时,将对新添加的图形赋以默认的名称,若要为图形指定更有意义的名称,可指定其Name属性。
第8行到第16行代码为矩形添加文字,并设定其格式。
其中第8行代码使用TextFrame 属性和Characters方法返回该矩形的字符区域。
应用于Shape对象的TextFrame 属性返回一个TextFrame对象,该对象包含指定图形对象的对齐和定位属性;Characters方法返回一个Characters对象,该对象代表某个图形的文本框中的字符区域,语法如下:expression.Characters(Start, Length)参数expression是必需的,返回一个指定文本框内Characters对象的表达式。
参数Start是可选的,表示将要返回的第一个字符,如果此参数设置为 1 或被忽略,则Characters方法会返回以第一个字符为起始字符的字符区域。
参数Length是可选的,表示要返回的字符个数。
如果此参数被忽略,则Characters 方法会返回该字符串的剩余部分(由Start参数指定的字符以后的所有字符)。
第9行代码为矩形添加文字,应用于Characters对象的Text属性返回或设置对象的文本,为可读写的String类型。
第10行到第15行代码设置矩形中文字的属性,应用于Characters对象Font属性返回一个Font对象,该对象代表指定对象的字体属性(字体名称、字体大小、字体颜色等),第11行代码设置字体名称,第12行代码设置字体样式,第13行代码设置字体大小,第14行代码颜色。
第17行到第20行代码设定矩形中文字的对齐方式。
应用于TextFrame对象的HorizontalAlignment属性返回或设置指定对象的水平对齐方式,可为表格 1-1所示的XlHAlign常量之一。
表格 1-1 HorizontalAlignment属性的XlHAlign常量应用于TextFrame对象的VerticalAlignment属性返回或设置指定对象的垂直对齐方式,可为表格 1-2所示的XlHAlign常量之一。
表格 1-2 VerticalAlignment属性的XlHAlign常量第21行代码设置矩形大小和位置不随单元格而变,应用于Shape对象的Placement属性返回或设置对象与所在的单元格之间的附属关系,可为表格 1-3所示的XlPlacement常量之一。
表格 1-3 XlPlacement常量第24行到第32行代码设置矩形的边框线条格式,应用于ShapeRange集合的Line属性返回一个LineFormat 对象,该对象包含指定图形的线条格式属性。
其中第26行代码设置矩形线条粗细,第27行代码设置矩形线条的虚线样式,第28行代码设置矩形填充的透明度,第29行代码设置矩形为可见,第30行代码设置矩形的前景色,第31行代码设置矩形填充背景的颜色。
第33行到第38行代码设置矩形的内部填充格式,应用于ShapeRange集合的Fill属性返回FillFormat对象,该对象包含指定的图表或图形的填充格式属性。
其中第35行代码设置矩形内部的透明度,第36行代码设置矩形内部为可见,第37行代码设置矩形内部的前景色,第38行代码将矩形内部指定填充设为单色渐变,应用于FillFormat对象的OneColorGradient方法将指定填充设为单色渐变,语法如下:expression.OneColorGradient(Style, Variant, Degree)其中参数Style是必需的,底纹样式,可为表格 1-1所示的MsoGradientStyle常量之一。
表格 1-4 MsoGradientStyle常量参数Variant是必需的,渐变变量。
取值范围为 1 到 4 之间,分别与“填充效果”对话框中“渐变”选项卡的四个渐变变量相对应。
如果GradientStyle 设为msoGradientFromCenter,则Variant参数只能设为 1 或 2。
参数Degree是必需的,灰度。
取值范围为 0.0(表示最深)到 1.0(表示最浅)之间。
第42、43行代码为矩形对象添加超链接,应用于Hyperlinks对象的Add方法向指定的区域或图形添加超链接,语法如下:expression.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)参数expression是必需的,返回一个Hyperlinks对象。
参数Anchor是必需的,超链接的位置。
可为Range对象或Shape对象。
参数Address是必需的,超链接的地址。
参数SubAddress是必需的,超链接的子地址。
参数ScreenTip是可选的,当鼠标指针停留在超链接上时所显示的屏幕提示。
参数TextToDisplay是可选的,要显示的超链接的文本。
运行AddShape过程结果如图 1-1所示。
图 1-1 在工作表中添加图形技巧1 导出工作表中的图片有时需要将工作表中的图形对象保存为单独的图像文件,可以使用Export方法将工作表中的图片以文件形式导出,如下面的代码所示。
#001 Sub ExportShp()#002 Dim Shp As Shape#003 Dim FileName As String#004 For Each Shp In Sheet1.Shapes#005 If Shp.Type = msoPicture Then#006 FileName = ThisWorkbook.Path & "\" & & ".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 End With#013 End If#014 Next#015 End Sub代码解析:ExportShp过程将Sheet1工作表的所有图片以文件形式导出到同一目录中。
第4行代码使用For Each...Next 语句遍历Sheet1工作表中的所有图形。
第5行代码判断图形的类型是否为图片,应用于Shape对象的Type属性返回或设置图形类型,可以为表格 1-1所示的MsoShapeType常量之一。
表格 1-1 MsoShapeType常量第6行代码使用字符串变量FileName记录需导出图形的路径和名称。