根据活动组合框的选择生成图表

问题描述 投票:3回答:2

我有两个活动组合框,根据用户的选择(必须选择两个选择),将从下面的数据集中的数据(这里是数据集的一部分)中生成一个图表:

enter image description here

[从两个组合框中选择时:enter image description here

图表将在同一张表格中生成,如下所示:enter image description here

这是我的代码,但出现编译错误(qualificateur incorrect ::

Option Explicit
Private Sub Workbook_Open()
Dim cbx As String
Dim cbx2 As String

ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Select
ActiveChart.SetSourceData Source:=Range("Feuil1!A3:B16")

If cbx.Value = "6 mois" And cbx2.Value = "Télévision" Then
ActiveChart.SetSourceData Source:=Range("Feuil1!A3:B16")
//... same code with other conditions

End If

End Sub
excel vba excel-vba
2个回答
1
投票

由于您有两个组合框,所以我假设您只想绘制一个系列,例如电视6个月,电影院12个月。

组合链接到工作表,既链接到输入范围,又链接到单元格链接。使用这些单元格范围比尝试从组合中获取信息要容易得多。

这是我的设置:

两个组合框。左侧使用C4:C6作为输入范围,使用B4作为单元格链接。右图使用F4:F6作为输入范围,并使用E4作为单元格链接。我们实际上只关心B4和E4,因为我们可以从中确定用于Y值的列。

(通常,您可能会将输入范围和单元格链接放在用户视线之外的某个地方,但不适用于此图例。)

enter image description here

这里是代码。

Sub InsertChartPerComboBoxes()
  Dim rXValues As Range, rYValues As Range, rName As Range
  Dim cht As Chart
  Dim iComboMonths As Long, iComboMedia As Long
  Dim iColumnOffset As Long

  iComboMonths = ActiveSheet.Range("B4").Value
  iComboMedia = ActiveSheet.Range("E4").Value

  iColumnOffset = (iComboMedia - 1) * 3 + iComboMonths

  Set rXValues = ActiveSheet.Range("A10:A17")
  Set rYValues = rXValues.Offset(0, iColumnOffset)
  Set rName = ActiveSheet.Range("A8:A9").Offset(0, iColumnOffset)

  Set cht = ActiveSheet.Shapes.AddChart2(201, xlColumnClustered).Chart
  cht.ChartArea.ClearContents

  With cht.SeriesCollection.NewSeries
    .Values = rYValues
    .XValues = rXValues
    .Name = "=" & rName.Address(, , , True)
  End With

End Sub

这是我在选择9个月和带有组合框的剧院后制作的图表。我选择了该系列,因此您可以看到工作表中突出显示的数据范围。

enter image description here


1
投票

根据您对情况的不同解释,我有一个替代的答案。

如果您有数据和图表,并且只希望能够选择该图表中的内容,而不必每次都构建新的图表,该怎么办?对于组合框,以下是您要让用户与之交互的仪表板的一项很棒的技术。

设置:

两个组合框。左侧使用C4:C6作为输入范围,使用B4作为单元格链接。右边的一个使用F4:F6作为输入范围,并使用E4作为单元格链接。

我在数据范围旁边添加了一个列,该列将根据组合框中的选择而变化。

单元格K8中的公式为=OFFSET(B8,0,(E4-1)*3)单元格K9中的公式为=OFFSET(A9,0,($E$4-1)*3+$B$4)复制单元格K9,选择K10:K17,然后粘贴。将百分比格式应用于K10:K17。

图表中绘制的序列的X值使用A10:A17,Y值使用K10:K17,名称使用K8:K9。系列公式始终指向这些范围,并且当组合框更改时,公式也会更改值。我选择了该系列,因此您可以在工作表中突出显示其源数据。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.