Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在excel VBA中创建varios图形_Excel_Vba - Fatal编程技术网

如何在excel VBA中创建varios图形

如何在excel VBA中创建varios图形,excel,vba,Excel,Vba,我编写了一个代码,用vba excel创建一个图表。但是我不能在同一个工作表中生成几个图形,也就是说,我有4列,我想创建4个图形 有人能帮我完成这项任务吗 这是我的代码: Sub create_BarChart() Dim myWorksheet As Worksheet Dim mySourceData As Range Dim myChart As Chart Dim myShape As Shape Dim myChartDestination As

我编写了一个代码,用vba excel创建一个图表。但是我不能在同一个工作表中生成几个图形,也就是说,我有4列,我想创建4个图形

有人能帮我完成这项任务吗

这是我的代码:

Sub create_BarChart()
   Dim myWorksheet As Worksheet
   Dim mySourceData As Range
   Dim myChart As Chart
   Dim myShape As Shape   
   Dim myChartDestination As Range
   Set myWorksheet = ThisWorkbook.Worksheets("corelacao")
   Set myChartDestination = myWorksheet.Range("D36:H45")
   Set myShape = myWorksheet.Shapes.AddChart(Excel.XlChartType.xl3DBarClustered)
   Set myChart = myShape.Chart
   With myChart
           .SetSourceData Source:=myWorksheet.Range("B1:C32")
           .ChartTitle.Text = "Analise de correlações"
           .Legend.Left = 250  'posição vertical
           .Legend.Width = 300 '100
          .Parent.Height = 200
          .Parent.Width = 269
          .Parent.Left = 95          
   End With
   With myShape
       .Height = 325 ' resize
       .Top = 300     ' reposition
       .Left = 100   ' reposition
       .Fill.ForeColor.RGB = RGB(230, 225, 220)
       .Fill.Solid
   End With
End Sub

我将在数组变量中指定图表的输入范围,并查看数组以生成图表:

Dim arr(2) As String
Dim mySourceData As Range
Dim myChart As Chart
Dim myShape As Shape
Dim myChartDestination As Range
Dim myWorksheet As Worksheet
Set myWorksheet = ActiveSheet

'Data area for each chart
arr(1) = "B1:C32"
arr(2) = "B1:B31,D1:D31"

For a = 1 To 2
    Set myChartDestination = myWorksheet.Range("D36:H45")
    Set myShape = myWorksheet.Shapes.AddChart(Excel.XlChartType.xl3DBarClustered)
    Set myChart = myShape.Chart
    With myChart
        .SetSourceData Source:=myWorksheet.Range(arr(a))
        .ChartTitle.Text = "Analise de correlações"
        .Legend.Left = 250
        .Legend.Width = 300
        .Parent.Height = 200
        .Parent.Width = 269
        .Parent.Left = 95
    End With
    With myShape
        .Height = 325
        .Top = 300
        .Left = 100 + ((a - 1) * 250)
        .Fill.ForeColor.RGB = RGB(230, 225, 220)
        .Fill.Solid
    End With
Next

迈克尔·罗莎,你的想法对我来说简直是耸人听闻。我刚刚实施并取得了成功。所以我要感谢你们的合作。