如何更改使用VBA创建的Excel条形图中的条形方向

时间:2014-05-21 16:17:09

标签: excel excel-vba excel-charts vba

我正在使用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

End Sub

条形图水平显示条形而不是垂直条形。所以我认为我的变量“varCats”将转到X轴而不是Y轴。

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

谢谢, ç

答案中的图片提供: enter image description here

期望的结果: enter image description here

1 个答案:

答案 0 :(得分: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