为所有工作表应用录制的宏

时间:2013-08-23 19:47:14

标签: excel vba excel-vba

我为特定的工作表录制了一个宏。但我的问题是,每次我为另一张表运行此宏时,它都使用我创建宏的工作表的值。但我希望这个宏适用于任何工作表。这是我的代码:

Sub AutoGraph()
'
' AutoGraph Macro
'
' Keyboard Shortcut: Ctrl+Shift+G
'
    Range("B:B,C:C").Select
    Range("C1").Activate
    ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
    ActiveChart.SetSourceData source:=Range("SHEET1!$B:$B,SHEET1!$C:$C")
    Range("B:B,D:D,E1,E:E").Select
    Range("E1").Activate
    ActiveSheet.Shapes.AddChart2(227, xlLine).Select
    ActiveChart.SetSourceData source:=Range( _
        "SHEET1!$B:$B,SHEET1!$D:$D,SHEET1!$E$1,SHEET1!$E:$E")
End Sub

其中SHEET1是我记录宏的工作表名称。我想我需要用所有表格中常见的东西来改变它,但是找不到逻辑。我感谢任何评论。

1 个答案:

答案 0 :(得分:1)

你有Sheet硬编码。这就是为什么这样做。

执行此操作的一种方法是简单地删除对Sheet1的引用。这将导致Excel默认为您当前所在的任何工作表。

Sub AutoGraph()
'
' AutoGraph Macro
'
' Keyboard Shortcut: Ctrl+Shift+G
'
    Range("B:B,C:C").Select
    Range("C1").Activate
    ActiveSheet.Shapes.AddChart2(227, xlLineMarkers).Select
    ActiveChart.SetSourceData source:=Range("$B:$B,$C:$C")
    Range("B:B,D:D,E1,E:E").Select
    Range("E1").Activate
    ActiveSheet.Shapes.AddChart2(227, xlLine).Select
    ActiveChart.SetSourceData source:=Range( _
        "$B:$B,$D:$D,$E$1,$E:$E")
End Sub