图形宏

时间:2014-01-07 20:41:14

标签: excel vba

我正在尝试在Excel中编写一个宏来绘制线图上的数字。如果单击A列中的特定单元格,宏应该绘制旁边数字的线图。

以下是宏的代码:

Sub Graph1()
'
' Graph1 Macro
'

'
    ActiveCell.Offset(0, 9).Range("A1:D1").Select
    ActiveSheet.Shapes.AddChart.Select
    ActiveChart.ChartType = xlLine
    ActiveChart.SetSourceData Source:=Range("'Sheet'!$J$4:$M$4")
End Sub

例如,当我尝试为单元格A2运行此宏时,我得到与单元格A1相关联的图形。所有其他细胞都会发生这种情况因此,如果我为单元格A10运行宏,我会得到与单元格A1相关联的图形。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

您强制源是固定范围($ J $ 4:$ M $ 4)而不是activecell。尝试以下代码并假设:

  1. 数据源仅包含1行,从activecell开始的4列
  2. 仅使用第一个图表对象,如果没有,则创建一个并使用它
  3. <强>代码:

    Sub Graph1()
    '
    ' Graph1 Macro
    '
    
    '
        Dim oRng As Range, oCht As Chart
        Application.ScreenUpdating = False
        Set oRng = ActiveCell.Range("A1:D1")
        oRng.Select
        On Error Resume Next
        Set oCht = ActiveSheet.ChartObjects(1).Chart
        On Error GoTo 0
        If oCht Is Nothing Then Set oCht = ActiveSheet.Shapes.AddChart.Chart
        If oCht.ChartType <> xlLine Then oCht.ChartType = xlLine
        oCht.SetSourceData Source:=oRng
        Set oCht = Nothing
        Set oRng = Nothing
        Application.ScreenUpdating = True
    End Sub