1

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

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 是我录制宏的工作表名称。我想我需要用所有工作表通用的东西来改变它,但找不到逻辑。我很感激任何评论。

4

1 回答 1

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
于 2013-08-23T20:08:20.773 回答