2013-08-23 41 views
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是我錄製宏的表的名稱。我想我需要用所有工作表共同的東西來改變它,但是不能找出邏輯。我很感激任何評論。

回答

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 
+0

是的,這正是我想要的,完全爲我工作。謝謝恩德蘭。 – JavaRed