0

我正在使用 VBA Excel 2010 在表单中创建图表。我已将 excel 配置为使用 Chartspace,并且该图表是使用动态数据正确创建的,但演示文稿不是我想要的,但不知道如何更改。请参阅代码部分:

Private Sub UserForm_Initialize()
Dim row_count As Integer
Dim n As Long
Dim chart_data As Worksheet

Set chart_data = Worksheets("Sheet3")
row_count = chart_data.UsedRange.Rows.Count

Dim varCats()
Dim varVals()

ReDim varCats(row_count)
ReDim varVals(row_count)

'Set c = ChartSpace1.Constants
Set mychart = ChartSpace1.Charts.Add
mychart.Type = xlColumnClustered '51 'chChartTypeBarClustered 'c.chChartTypeBarClustered

For n = 2 To row_count
    varCats(n) = ActiveWorkbook.Sheets("Sheet3").Range("A" & n).Value
    varVals(n) = ActiveWorkbook.Sheets("Sheet3").Range("T" & n).Value
Next n

mychart.SeriesCollection.Add
With mychart.SeriesCollection(0)
    .SetData chDimSeriesNames, chDataLiteral, "QAR Score"
    .SetData chDimCategories, chDataLiteral, varCats
    .SetData chDimValues, chDataLiteral, varVals
End With

结束子

条形图水平而不是垂直显示条形图。所以我认为我的变量“varCats”会去 X 轴的地方不是 Y 轴。

我知道这将是来自社区的简单回应,但我还没有通过搜索找到它。

谢谢, C

来自答案的图片提供: 在此处输入图像描述

期望的结果: 在此处输入图像描述

4

1 回答 1

0

修改为在 UserForm 中使用 ChartSpace 对象

Private Sub UserForm_Initialize()
    Dim row_count As Integer
    Dim n As Long
    Dim chart_data As Worksheet
    Dim srs As ChSeries
    Dim myChart As ChChart

    Set chart_data = Worksheets("Sheet3")
    row_count = chart_data.UsedRange.Rows.Count

    ReDim varCats(1 To row_count)
    ReDim varVals(1 To row_count)

    varCats = Application.Transpose(chart_data.Range("A2:A" & row_count).Value)
    varVals = Application.Transpose(chart_data.Range("T2:B" & row_count).Value)

    'Set c = ChartSpace1.Constants
    Set myChart = ChartSpace1.Charts.Add
        myChart.Type = chChartTypeColumnClustered
    Set srs = myChart.SeriesCollection.Add
        With srs
            .SetData chDimSeriesNames, chDataLiteral, "QAR Score"
            .SetData chDimCategories, chDataLiteral, varCats
            .SetData chDimValues, chDataLiteral, varVals
        End With



End Sub
于 2014-05-21T16:21:37.347 回答