用于创建图表的VBA宏可以在一个excel电子表格上工作,但不能在另一个excel电子表格上工作

用于创建图表的VBA宏可以在一个excel电子表格上工作,但不能在另一个excel电子表格上工作,excel,vba,Excel,Vba,嗨,我的代码有问题。出于某种原因,它在一个文档上工作正常,但在另一个文档上却不工作。下面是我的代码: Sub Graph2() ' Graphs for monitoring Dim my_range As Range, t, co As Shape '<edit t = Selection.Cells(1, 1).Value & " - " & ActiveSheet.Name Dim OldSheet As Worksheet

嗨,我的代码有问题。出于某种原因,它在一个文档上工作正常,但在另一个文档上却不工作。下面是我的代码:

Sub Graph2()

'   Graphs for monitoring

    Dim my_range As Range, t, co As Shape '<edit

    t = Selection.Cells(1, 1).Value & " - " & ActiveSheet.Name

    Dim OldSheet As Worksheet
    Set OldSheet = ActiveSheet

    Set my_range = Union(Selection, ActiveSheet.Range("A:A"))

    Set co = ActiveSheet.Shapes.AddChart2(201, xlLine) 'add a ChartObject

    With co.Chart
        .FullSeriesCollection(1).ChartType = xlXYScatter
        .FullSeriesCollection(1).AxisGroup = 1
        .FullSeriesCollection(2).ChartType = xlLine
        .FullSeriesCollection(2).AxisGroup = 1
        .SetSourceData Source:=my_range
        'highlight final dot of data
        .FullSeriesCollection(1).Points(.FullSeriesCollection(1).Points.Count - 1).ApplyDataLabels Type:=xlShowValue
        .HasTitle = True
        .ChartTitle.Text = t
        'ResolveSeriesnames co.Chart
        .Location Where:=xlLocationAsObject, Name:="Graphs"

    End With

    OldSheet.Activate
End Sub
子图2()
"监测图表"

将我的_范围变暗为范围,t、co变暗为形状‘这两张纸有什么不同?当您将图表添加到工作表时,它通常会从所选单元格中提取数据-可能值得检查添加图表时所选的内容。我建议您对工作表的声明进行排序。可以肯定地说,每次使用
ActiveSheet
都是一个风险因素,99%的
Select
Activate
都没有合法的用途。在你的代码中,不要这样做
Union(Selection,ActiveSheet.Range(“A:A”))
正在自找麻烦。我想如果你对这些语法和逻辑问题进行分类,你的代码很可能会像你期望的那样工作。你能给我一些提示,让我找到正确的方向吗@Variatus@TimWilliams当我手动选择要绘制图表的列时,出于某种原因,在非工作文档上,它会取消选择我选择的第一列-因此,为什么我会丢失一系列数据如果您使用F8单步遍历代码,选择在什么时候更改?