Userform中的Chartspace的Excel VBA数组数据源

时间:2014-07-04 14:21:13

标签: excel vba excel-vba

我尝试在Excel Userform中生成条形图 - Chartspace是否有可能使用VBA生成的数组数据作为条形图的来源。我只能找到Spreadsheet的说明作为来源。

Private Sub UserForm_Activate()
Dim z As Long, s As Integer
Dim cc
Dim ch1
Dim pt
For z = 1 To 9
  For s = 1 To 2
    Spreadsheet1.ActiveSheet.Cells(z, s) = Sheets("Tabelle1").Cells(z, s)
  Next
Next

Set cc = ChartSpace1.Constants
Set ChartSpace1.DataSource = Spreadsheet1  '<-- does it need linked to a spreadsheet?
Set ch1 = ChartSpace1.Charts.Add
ch1.Type = cc.chChartTypeLineMarkers
ch1.SetData 1, 0, "A2:A9"
ch1.SeriesCollection(0).SetData 2, 0, "B2:B9"
End Sub

是否可以在userform中显示条形图,以便我可以使用数组源? 非常感谢。

1 个答案:

答案 0 :(得分:2)

也许这表明了如何做到这一点:

http://msdn.microsoft.com/en-us/library/office/aa193650(v=office.11).aspx

此示例(稍作修改,以便我可以从上面的链接进行测试)使用文字数据数组创建一个图表。

输出示例

enter image description here

代码示例

Sub BindChartToArrays()

    Dim asSeriesNames(1)
    Dim asCategories(7)
    Dim aiValues(7)
    Dim chConstants
    Dim chtNewChart

    Dim myChtSpace As ChartSpace

    asSeriesNames(0) = "Satisfaction Data"

    asCategories(0) = "Very Good"
    asCategories(1) = "Good"
    asCategories(2) = "N/A"
    asCategories(3) = "Average"
    asCategories(4) = "No Response"
    asCategories(5) = "Poor"
    asCategories(6) = "Very Poor"

    aiValues(0) = 10
    aiValues(1) = 22
    aiValues(2) = 6
    aiValues(3) = 31
    aiValues(4) = 5
    aiValues(5) = 14
    aiValues(6) = 12

    Set myChtSpace = UserForm1.ChartSpace1

    Set chConstants = myChtSpace.Constants

    ' Add a new chart to Chartspace1.
    Set chtNewChart = myChtSpace.Charts.Add

    ' Specify that the chart is a column chart.
    chtNewChart.Type = chConstants.chChartTypeColumnClustered

    ' Bind the chart to the arrays.
    chtNewChart.SetData chConstants.chDimSeriesNames, chConstants.chDataLiteral, asSeriesNames
    chtNewChart.SetData chConstants.chDimCategories, chConstants.chDataLiteral, asCategories
    chtNewChart.SeriesCollection(0).SetData chConstants.chDimValues, chConstants.chDataLiteral, aiValues


    UserForm1.Show

End Sub