Excel 创建VBA图表 我处于一个问题的中间:我需要使用组合框值作为I键来搜索其他计划中的数据,当我找到相同的值时,捕获同一行中的一些单元格值并绘制此图。有人能帮我吗?我认为我最大的问题是用图表创建一些循环,因为我需要验证这个值是否大于0.01才能捕获它。 迄今为止的尝试: Private Sub ComboBox1_Click() x = 751 y = 1 If Sheets("Data").Cells(x, 7).Value = Me.ComboBox1.Value Then Sheets("Análises").ChartObjects("Chart 3").Activate ChartObjects("Chart 3").SeriesCollection.NewSeries ChartObjects("Chart 3").SeriesCollection(1).Name = Sheets("Data").Cells(x, 7).Value If Sheets("Data").Cells(x, 7 + y).Value > 0.01 Then ActiveChart.SeriesCollection(1).Values = "=Data!$L$752,Data!$N$752,Data!$R$752,Data!$T$752" ActiveChart.SeriesCollection(1).XValues = "=Data!$H$10" ActiveChart.SeriesCollection(1).XValues = "=Data!$H$10,Data!$J$10,Data!$L$10,Data!$N$10" End If Else x = x + 1 End If End Sub

Excel 创建VBA图表 我处于一个问题的中间:我需要使用组合框值作为I键来搜索其他计划中的数据,当我找到相同的值时,捕获同一行中的一些单元格值并绘制此图。有人能帮我吗?我认为我最大的问题是用图表创建一些循环,因为我需要验证这个值是否大于0.01才能捕获它。 迄今为止的尝试: Private Sub ComboBox1_Click() x = 751 y = 1 If Sheets("Data").Cells(x, 7).Value = Me.ComboBox1.Value Then Sheets("Análises").ChartObjects("Chart 3").Activate ChartObjects("Chart 3").SeriesCollection.NewSeries ChartObjects("Chart 3").SeriesCollection(1).Name = Sheets("Data").Cells(x, 7).Value If Sheets("Data").Cells(x, 7 + y).Value > 0.01 Then ActiveChart.SeriesCollection(1).Values = "=Data!$L$752,Data!$N$752,Data!$R$752,Data!$T$752" ActiveChart.SeriesCollection(1).XValues = "=Data!$H$10" ActiveChart.SeriesCollection(1).XValues = "=Data!$H$10,Data!$J$10,Data!$L$10,Data!$N$10" End If Else x = x + 1 End If End Sub,excel,vba,charts,Excel,Vba,Charts,我知道这没有多大意义。我执行了一个宏来查看如何使用图表,但我意识到我正在尝试的这种方式行不通。不知何故,我需要选择一些单元格作为图表的值(它们不是顺序的),这将取决于ComboBox1的选择 我已经找到了如何通过循环捕捉范围,现在只需将其放入图表中: Sub ComboBox1_Change() Dim rng As Range Dim x As Integer Dim y As Integer y = 8 For x = 751 To 1000 Step 1 If Me.ComboBo

我知道这没有多大意义。我执行了一个宏来查看如何使用图表,但我意识到我正在尝试的这种方式行不通。不知何故,我需要选择一些单元格作为图表的值(它们不是顺序的),这将取决于ComboBox1的选择

我已经找到了如何通过循环捕捉范围,现在只需将其放入图表中:

Sub ComboBox1_Change()

Dim rng As Range
Dim x As Integer
Dim y As Integer

y = 8

For x = 751 To 1000 Step 1

If Me.ComboBox1.Value = Worksheets("Data").Cells(x, y - 1).Text Then

 Set rng = Worksheets("Data").Cells(x, y)

    Do Until y > 36

    y = y + 2

    Set rng = Application.Union(rng, Worksheets("Data").Cells(x, y))

    Loop

   rng.Copy

 End If

Next x

End Sub
我相信我最大的问题是用图表创建一些循环

使用适当的对象变量:

Dim cObj as ChartObject
Dim cht as Chart
然后使用
For/Next
循环:

For each cObj in ...
    Set cht = cObj.Chart '## Chart is child of ChartObject
Next
像这样,也许(我不确定您需要在哪里循环,或者您可能需要什么其他逻辑):


到目前为止你试过什么?请查看并修改您的问题,并提供适当的详细信息和具体问题。对不起,先生,我还没有阅读本节,但这里将介绍到目前为止的尝试:您需要编辑原始问题以包含代码。注释中的代码不适合或显示不正确。这就是上面的代码
Dim cObj As ChartObject
Dim cht As Chart
Dim srs As Series
Dim x as Long
Dim y as Long

x = 751
y = 1

If Sheets("Data").Cells(x, 7).Value = Me.ComboBox1.Value Then

For each cht in Sheets("Análises").ChartObjects
    Set srs = cht.SeriesCollection.NewSeries
    srs.Name = Sheets("Data").Cells(x, 7).Value

    If Sheets("Data").Cells(x, 7 + y).Value > 0.01 Then

    '## NOTE: I suspect these ranges also need to change for each chart
    '         That is going to be better suited for a SEPARATE question.

    srs.Values = "=Data!$L$752,Data!$N$752,Data!$R$752,Data!$T$752"
    srs.XValues = "=Data!$H$10"
    srs.XValues = "=Data!$H$10,Data!$J$10,Data!$L$10,Data!$N$10"

    End If
Next

Else

x = x + 1

End If