精华内容
下载资源
问答
  • VBA图表剖析.VBA图表剖析.VBA图表剖析.VBA图表剖析.
  • vba 图表实例

    2011-10-25 23:24:27
    vba 图表实例vba 图表实例vba 图表实例vba 图表实例
  • 今天继续讲讲VBA图表的相关操作 一、在图表工作表上创建图表(看起来有点拗口,也就是在Chart上创建一个图表) 插入图表的方式:打开工作簿后,对着sheet点一下右键——插入——选择图表。 ①昨天主要是讲了...

    今天继续讲讲VBA图表的相关操作

    一、在图表工作表上创建图表(看起来有点拗口,也就是在Chart上创建一个图表)

    插入图表的方式:打开工作簿后,对着sheet点一下右键——插入——选择图表。

     

    ①昨天主要是讲了VBA创建在sheet上面的图表,如果单独在Chart上创建图表的话,用Charts的add2方法就可以了:

        Charts.Add2

    ②创建完了如果需要引用数据的话,可以和昨天一样引用数据:

    Sub demo()
        Dim myChart As Chart
        Set myChart = Charts.Add2
        myChart.SetSourceData Source:=Sheets("Sheet1").Range("A1").CurrentRegion
        myChart.ChartType = xlColumnClustered
    End Sub

    需要注意的是,上述在引用数据源的时候,我是用的Sheets("Sheet1"),而不是常用的Sheets(1),这是因为新建了myChart后呢,它是自动往前面插入的,Sheets(1)就变成了图表,而不是原来的数据的那张表。

    ③如果先将区域值内的值赋值,再新建Chart就不用担心Sheet(1)引用不到了,可以这样写:

    Sub demo()
        Dim myChart As Chart
        Dim myRng As Range
        
        '先将原数据进行赋值,这样创建Chart后即使Chart是Sheet(1)也就不会报错啦
        Set myRng = Sheets(1).Range("A1").CurrentRegion
        Set myChart = Charts.Add2
        myChart.SetSourceData Source:=myRng
        myChart.ChartType = xlColumnClustered
    End Sub

    当然了,也可以简单点,Chart新建时用after参数将新建的Chart表格位置放在Sheet1后面,同样不会报错

    Sub demo()
        Charts.Add2 after:=Sheets(Sheets.Count)
        Sheets("Chart1").SetSourceData Source:=Sheets("Sheet1").Range("A1").CurrentRegion
    End Sub

    二、修改图表

     

    ①在插入了图表后,点一下图表,在右上角会出现3个可以点的按钮:

    1.图表元素 ChartElements,给图表添加或删除元素

    2.图表样式 Style&Color,选择图表样式或调色板的颜色

    3.图表筛选器: Chart Filters,隐藏序列或数据点

    ②VBA控制图表元素的话,主要是通过SetElement属性,代码如下:

        myChart.SetElement msoElementPrimaryValueGridLinesMajor

    SetElement具体的每个属性可以参考这个链接:

    https://docs.microsoft.com/zh-cn/office/vba/api/office.msochartelementtype

    VBA控制图表样式的话,主要是通过ChartStyle和ChartColror属性,代码如下:

    ChartStyle数字有效值是1~48和201~248

        myChart.ChartStyle = 248

    ChartColor数字有效值是1~26

        myChart.ChartColor = 26

    VBA控制图表筛选器的话,系列主要用myChart.FullSeriesCollection(2).IsFiltered进行过滤;类别主要是ChartGroups(1).FullCategoryCollection(i).IsFiltered进行过滤,值为True则不显示,代码如下:

        For i = 1 To 1
            myChart.FullSeriesCollection(i).IsFiltered = True
        Next
        For j = 1 To 10
            myChart.ChartGroups(1).FullCategoryCollection(j).IsFiltered = False
        Next

    三、激活和取消激活

    ①激活图表

    如果是单独的Chart图表可以这样:

        Sheets("Chart1").Activate

    如果是在sheet里面的图表可以这样:

        Sheets("sheet1").ChartObjects(1).Activate

    ②取消激活

    取消激活比较简单,随便点一下其他地方就取消激活了,所以可以这样:

    Sheets("sheet1").Range("A1").Select

    四、移动图表

    还是拿前面的例子来说,假设需要把myChart进行移动

        '将Sheet1上的图表移动到存在的Sheet2上
        'myChart.Location where:=xlLocationAsObject, Name:="Sheet2"
        '将Sheet1上的图表移动准备新建的Sheet3上
        'myChart.Location where:=xlLocationAsNewSheet, Name:="Sheet3"
        '将Sheet1上的图表交给EXCEL处理
        'myChart.Location where:=xlLocationAutomatic

    名称

    描述

    xlLocationAsNewSheet

    1

    将图表移动到新工作表

    xlLocationAsObject

    2

    将图表嵌入现有工作表

    xlLocationAutomatic

    3

    由 Excel 控制图表位置

    今天就先到这里啦,明天继续~

    展开全文
  • excelVBA图表绘制

    2018-12-11 14:49:08
    通过excel快速绘图,可根据需要调整图表格式,可以实现批量画图,省去了改图时间
  • 今天继续讲讲VBA图表的相关内容 一、删除图表 ①假设sheet1上面有个图表,要删除的话,代码如下: Sub demo() Sheets("Sheet1").ChartObjects(1).Delete End Sub ②如果是单独的一张Chart,要删除的话直接...

    今天继续讲讲VBA图表的相关内容

    一、删除图表

    ①假设sheet1上面有个图表,要删除的话,代码如下:

    Sub demo()
        Sheets("Sheet1").ChartObjects(1).Delete
    End Sub

    ②如果是单独的一张Chart,要删除的话直接把Chart删除就可以啦:

    Sub demo()
        Sheets("Chart1").Delete
    End Sub

    这样删除会弹出一个警告框,如果不需要弹出警告框可以加一句:

    Sub demo()
        Application.DisplayAlerts = False
        Sheets("Chart1").Delete
        Application.DisplayAlerts = True
    End Sub

    ③如果需要删除在Sheet1上所有图表的话,可以通过shapes进行遍历:

    Sub demo()
        Dim shp As Shape
        For Each shp In Sheets("Sheet1").Shapes
            shp.Delete
        Next
    End Sub

    .也可以通过图表对象ChartObject进行操作:

    Sub demo()
        Dim chartObj As ChartObject
        For Each chartObj In Sheets("Sheet1").ChartObjects
            chartObj.Delete
        Next
    End Sub

    如果需要删除所有Sheet上的所有的图表,只需要再套一层sheet的遍历就可以啦:

    Sub demo()
        Dim shp As Shape
        Dim sht As Worksheet
        For Each sht In Sheets
            For Each shp In sht.Shapes
                shp.Delete
            Next
        Next
    End Sub

    二、创建大量图表

    假设有如下这样一张表格,需要做每一天24小时的数值变化折线图,一共40天,具体怎么实现呢?

    捋一捋思路:

    设置40次的循环——创建一个图表,每创建完换个位置——选择数据源,每创建完数据源换一行——设置图表格式。

    Sub demo3()
        Dim chartObj As ChartObject
        Dim cht(1 To 40) As Chart
        Dim i As Integer
        
        '定义生成的图表的位置大小参数
        Dim leftCht As Long, rightCht As Long, topCht As Long, widthCht As Long, heightCht As Long
        
        For i = 1 To 40
            '两列排列,奇数列左侧50点距离,偶数列离左侧300点距离
            If i Mod 2 = 0 Then
                leftCht = 300
            Else
                leftCht = 50
            End If
            
            '第1和2/3和4/5和6……的表格高度是一致的,可以这样设置
            topCht = Application.WorksheetFunction.RoundUp(i / 2, 0) * 150 - 120
            
            '创建新的图表,将上述参数进行赋值
            Set cht(i) = Sheets("Sheet2").Shapes.AddChart2 _
            (201, xlLine, leftCht, topCht, 250, 120, 5).Chart
            
            '根据循环次数,选择数据源
            cht(i).SetSourceData Source:=Sheets("Sheet1").Cells(i + 1, 2).Resize(1, 7)
        Next
    End Sub

    效果如下:

    三、导出图表

    比如说上面创建了40张图,我们要每张都保存到网站上去,每个截图兼职懵逼,怎么快速实现呢?

    ①使用chart的Export方法实现导出gif,Chart.Export 方法:一共3个参数:

    名称

    必需/可选

    数据类型

    说明

    FileName

    必需

    String

    被导出的文件的名称。

    FilterName

    可选

    Variant

    图形过滤器出现在注册表中时独立于语言的名称。

    Interactive

    可选

    Variant

    True 显示包含筛选特定选项的对话框。 如果为 False,则 Microsoft Excel 使用筛选器的默认值。 默认值为 False。

    在上面的基础上,我是想着这样应该能导出:

    Sub chtExport()
        Dim chtObj As ChartObject
        Dim fname As String
        For Each chtObj In Sheets("Sheet2").ChartObjects
            fname = "E:\VBA呀呀呀\temp\" & chtObj.Chart.Name & ".gif"
            chtObj.Chart.Export Filename:=fname, filtername:="gif"
        Next
    End Sub

    当然了,形式上也可以换成这样:

    Sub chtExport2()
        Dim shp As Shape
        Dim fname As String
        
        For Each shp In Sheets("Sheet2").Shapes
            fname = "E:\VBA呀呀呀\temp\" & shp.Chart.Name & ".gif"
            shp.Chart.Export Filename:=fname, filtername:="gif"
        Next
    End Sub

    两者图表也确实都导出来成了gif,但是实际上导出来的gif只有部分有数值,这个问题百度蛮久都没有得到解释,请各位大神答疑解惑。

    ②导出HTML网页格式

    Sub chtExport3()
        Dim shp As Shape
        Dim fname As String
        fname = "E:\VBA呀呀呀\图表"
        ActiveWorkbook.SaveAs Filename:=fname, FileFormat:=xlHtml
    End Sub

    这样就会在"E:\VBA呀呀呀“文件夹下创建了一个"图表.html"的文件和一个图片文件夹,图片文件夹下就是我们需要的图啦

    今天就到这里了,明天继续学~

    展开全文
  • VBA图表事件

    2013-06-04 00:21:22
    应用API实现随鼠标在图表移动位置显示对应数据标签等功能
  • VBA 图表的基本操作

    千次阅读 2020-08-12 23:46:07
    本章主要是学习VBA生产图表。 首先假设有这样的一些数据: 一、生成图表前,先看看工作表sheet对象的层次结构: Application Workbook Worksheet ①如果图表是在sheet上的话,层次结构是.

    不知不觉已经学习VBA大半个月了,数据透视表的内容已经学完了,回想一下,demo做得还是比较少,匆匆学完没有练习,很多内容还不熟练,不过为了保持学习的连贯性(当然了,主要是不停地往前学不做练习比较简单),咱就先把书上的内容全学了,再慢慢做练习吧。

    本章主要是学习VBA生产图表。

    首先假设有这样的一些数据:

    一、生成图表前,先看看工作表sheet对象的层次结构:

    Application
        Workbook
            Worksheet

    ①如果图表是在sheet上的话,层次结构是这样滴:

    Application
        Workbook
            Worksheet
                ChartObject
                    Chart
                        ChartTitle

    根据上面的结构,如果需要调用ChartObject的话,前面得加上某workbook和某sheet,然后ChartObject里面可以操作Chart,Chart又可以操作ChartTitle。所以比如要设置一个图表的标题,可以这样操作:

    Workbook.Sheets(1).ChartObjects(1).Chart.ChartTitle.Text = "第一个图表"

    ②如果图表不是在sheet上的话,层次结构略有不同,因为和sheet并列了,所以没有sheet这个结构了,也没有ChartObject

    Application
        Workbook
            Chart
                ChartTitle

    所以这里要设置一个图表的标题的话,结构有点不一样(对着sheet上面的图表按一下F11,就会在边上生成个和sheet并列的chart图表):

    Sub demo2()
        Sheets("Chart1").ChartTitle.Text = "第二个图表"
    End Sub

    二、创建嵌入式图表

    ①先看看直接插入图表的宏代码长啥样

    Sub demo()
        ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
        ActiveChart.SetSourceData Source:=Range("Sheet1!$A$1:$E$41")
    End Sub

    ②我们会发现中间有个Shapes.AddChart2的内容,简单说一下:

    ChartObject 是特殊的Shape对象,所以也就是Shape集合的一个成员。所以创建一个没内容的图表可以参照上面的语句改一下:

    Sub demo3()
        ActiveSheet.Shapes.AddChart2
    End Sub

    ③我们还可以看到录制的宏上面还有AddChart2还有个201和xlColumnClustered参数,下面讲讲AddChart2的参数(一共7个,都是可选的):

    1.Style:制定图表的样式的数值代码

    2.xlChartType:图表类型。可以点击下面的链接查看每个代码对应的图表样式

    https://docs.microsoft.com/zh-cn/office/vba/api/excel.xlcharttype

    3.Left:图表左边的位置,省略就会水平居中

    4.Top:图表顶端位置,省略就会垂直居中

    5.Width:图表的整个大小宽度,省略默认354

    6.Height:图表的整个大小高度,省略默认210

    7.NewLayout:图表布局的数值代码

    ④根据上面的参数,创建个设置长宽高的空表:

    代码如下(注意哈,这个参数没有用括号括起来):

    Sub demo4()
        ActiveSheet.Shapes.AddChart2 201, xlColumnClustered, 20, 20, 200, 200, 5
    End Sub

    当然了也可以这样:

    Sub demo5()
        Dim myChart As Chart
        Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
    End Sub

    ⑤上述两种办法都是创建了一个长宽高的空表,里面没有数据,参照之前的录制宏代码,我们还要往里面指定图标的数据,所以在此基础上可以先选择单元格再插入,也就是这样操作:

    Sub demo4()
        Range("A1").CurrentRegion.Select
        ActiveSheet.Shapes.AddChart2 201, xlColumnClustered, 20, 20, 200, 200, 5
    End Sub

    当然了也可以这样:

    Sub demo5()
        Range("A1").CurrentRegion.Select
        Dim myChart As Chart
        Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
    End Sub

    ⑥除了选中区域之外,也可以使用SetSourceData方法引用(因为意思都一样,这次就写一个了):

    Sub demo6()
        Dim myChart As Chart
        Set myChart = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered, 20, 20, 200, 200, 5).Chart
        myChart.SetSourceData Source:=Range("A1").CurrentRegion
    End Sub

    好了,今天的内容就先到这啦~

     

     

    展开全文
  • VBA图表剖析

    千次阅读 2011-07-17 22:14:41
    一、图表各元素在VBA中的表达方式 1、图表VBA名称:ChartArea 2、绘图区 VBA名称:PlotArea 调整绘图区的大小以及在图表中的位置,指定绘图区的Top、Left、Height和Width属性。 3、数据系列 VBA名称:...

    一、图表各元素在VBA中的表达方式

    1、图表区

    VBA名称:ChartArea

    2、绘图区

    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 With

    7、图表标题、图例和数据表

    VBA名称:ChartTitle、HasLegend和HasDataTable

    可以用VBA指定图表标题和图例的位置、文字和文字格式。

    8、趋势线和误差线

    VBA名称:Trendlines和ErrorBar

    二、图表类型

    Excel标准图表类型UploadFiles/2006-5/526362927.rar

    展开全文
  • 各路大神 ...有下图所示的一张表,我想通过vba代码来实现将折线改为散点图(而不是右键选择chart type) [img=https://img-bbs.csdn.net/upload/201405/08/1399537968_556835.jpg][/img] 谢谢解答!
  • vba 画Execl图表

    2011-10-25 23:48:07
    vba 画Execl图表vba 画Execl图表vba 画Execl图表vba 画Execl图表
  • vba更改图表的系列值

    2019-01-22 10:37:09
    excel通过vba图表更新系列的值,小工具,仅供大家参考
  • VBA图表获取数据源

    2012-07-20 15:57:44
    VBA图表获取数据源
  • vba 产生Execl图表实例

    2011-10-26 00:01:04
    vba 产生Execl图表实例vba 产生Execl图表实例vba 产生Execl图表实例
  • VBA生成图表方式

    千次阅读 2019-10-08 17:20:48
    Sub 生成图表() Worksheets("图表").ChartObjects.Delete With Worksheets("历史记录表") Set MYCHART = .ChartObjects.Add(10, 10, 500, 150) '左,上,长,高 With MYCHART.Chart .ChartType = xlLineMarkers ....
  • vba控制图表,excel图表,一键完成

    千次阅读 2019-10-01 15:18:05
    来源... 官方教程链接 https://docs.microsoft.com/zh-cn/office/vba/api/excel.worksheet.chartobjects 运行宏就显示图表 Sub test() Dim ch As ChartObject, ws As W...
  • VBA 创建图表

    2012-10-24 10:12:40
    大家好 ...数据源,我想根据这个数据源在myworkbook 对象中生成图表页,不知怎么样用myworkbook和Charts对象,希望大家能够帮忙指教指教 Sub DrawLine(myworkbook As Workbook) todo end sub
  • 根据提供的表格,用vba制作图表,可以设定显示样式和使用的y轴
  • 使用VBA,可以根据特定标准生成图表。下面通过一个例子来看看它如何实现。 第1步 - 输入要生成图形的数据。 第2步 - 创建3个按钮 - 一个生成条形图,另一个生成饼图,另一个生成柱形图。 第3步 - 开发一个...
  • 使用VBA完成Excel 图表Y轴上下限的动态设置
  • VBA 设置图表数据源

    2017-03-02 08:34:59
    Sheets("异常图表").ChartObjects("图表?3").Chart.SetSourceData?Source:=Sheets("异常图表").Range("A1:B"?&?Sheets("异常图表").Range("a65536").End(xlUp).Row) ?????????? ?????????? ?????????? ?????????...
  • VBA 图表Y坐标轴会自动改变,自动修改内部坐标轴,及颜色,形状等等.
  • 【Excel VBA】使用代码生成图表——Chart和Shape的使用方法 文章案例
  • VBA清除图表内容

    2008-12-16 16:29:00
    Excel图表从新生成的时候,有的时候不能全部清空原来图表的内容,而且还会出现卡死的情况 所以就写了几行代码,先清空图表原来的内容,然后从新生成 DimccAsChart Fori=1To3 Setcc=Sheet6.ChartObjects(i)....
  • 可以通过VBA创建的图快速生成折线图,并可适当修改符合自己的要求。
  • vba交付图表设计 设计 (DESIGN) I believe this is always a hard question for us — Designers. In most instances, design output is affected by the feeling of the reviewer. That’s why it’s harder to ...
  • Excel VBA创建动态图表

    2019-05-24 01:59:59
    NULL 博文链接:https://jacky2007.iteye.com/blog/369609
  • vba学习_图表

    千次阅读 2014-04-19 16:21:36
    最近开始学vba了,虽然很多都看不懂,

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 555
精华内容 222
关键字:

vba图表