#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. Привет, Дэвид, спасибо за ответ. Дайте мне немного времени, чтобы проверить это. Спасибо