选择两列并在VBA中创建图表

时间:2013-11-28 12:04:13

标签: excel vba excel-vba

嗨,我对VBA很新。我正在尝试使用两列A1:A10,C1:C10(即A和C)创建一个图表。我用鼠标选择了这两列,当我尝试宏代码时,我收到以下错误“运行时错误1004,应用程序错误或对象定义错误“。但是当我选择A列和B列(即A1:B10)时,我能够创建图表。需要一些建议。

这是我的代码:

Sub Chart()

    Dim rng As Range

    Set rng = Selection

    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.SetSourceData Source:=rng
    ActiveChart.ChartType = xlColumnClustered

End Sub

1 个答案:

答案 0 :(得分:0)

这对我有用

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim objChrt As ChartObject
    Dim chrt As Chart

    Set ws = ThisWorkbook.Sheets("Sheet1")
    With ws
        Set rng = .Range("A1:A10,C1:C10")
        .Shapes.AddChart
        Set objChrt = .ChartObjects(.ChartObjects.count)
        Set chrt = objChrt.Chart

        With chrt
            .ChartType = xlColumnClustered
            .SetSourceData Source:=rng
        End With
    End With
End Sub

或者,如果您仍想使用.Selection,请使用此

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range
    Dim objChrt As ChartObject
    Dim chrt As Chart

    '~~> Check if what the user selected is a valid range
    If TypeName(Selection) <> "Range" Then
        MsgBox "Select a range first."
        Exit Sub
    End If

    Set ws = ThisWorkbook.Sheets(Selection.Parent.Name)
    With ws
        Set rng = Selection
        .Shapes.AddChart
        Set objChrt = .ChartObjects(.ChartObjects.count)
        Set chrt = objChrt.Chart

        With chrt
            .ChartType = xlColumnClustered
            .SetSourceData Source:=rng
        End With
    End With
End Sub