Источник данных массива Excel VBA для пространства диаграмм в пользовательской форме

#vba #excel

#vba #excel

Вопрос:

Я пытаюсь сгенерировать столбчатую диаграмму в 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
  

Есть ли другой способ показать столбчатую диаграмму в пользовательской форме, где я могу использовать источник массива?
Большое спасибо.

Ответ №1:

Возможно, это подсказывает, как это сделать:

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

В этом примере (слегка измененном, чтобы я мог протестировать по ссылке выше) создается диаграмма с использованием литеральных массивов данных.

Пример вывода

введите описание изображения здесь

Пример кода

 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
  

Комментарии:

1. Привет, Дэвид, спасибо за ответ. Дайте мне немного времени, чтобы проверить это. Спасибо