「マクロ記録」では、操作手順がそのまま記録されます。
例えば、特定のセルやワークシートに対して動作するようにしたマクロは、限られた場所でしか利用できません。
しかし、記録されたマクロの一部を書き換えたり、次のように、マクロの記録前に、作業するシートをアクティブにすることで、汎用的に使用できるマクロにすることが出来ます。
方法1
●特定のシートやセルに依存しないマクロを作成するには、
マクロの記録前に、作業するシートをアクティブにして、作業対象となるセル範囲やシートをあらかじめ選択した上でマクロ記録を開始します。
そうすると、他のシートでも使用できるマクロが作成できます。
方法2
キーボードから「ALT」+「F11」キーを押し、VBAを起動し、既に記録されているマクロを編集します。
| 1.特定のセルやシート対応したマクロ | 2.汎用的なマクロに変更します。 | |
| 'セルの選択範囲(B3:B5)を削除します。 Sub Mcro1() Range("B3:B5").Select End Sub |
’セル範囲を指定せずに選択した範囲を削除するように変更します。 Range("B3:B5").Selectの部分を削除して下のようにします。 Sub Mcro1() Selection.clearContents End Sub |
1で作成したマクロは、「B3:B5」を選択するというコードが記述されている為、この範囲のデータをクリアする目的以外に利用できません。 選択範囲を指定しないように「B3:B5」を削除すると、不特定なセル範囲に対して有効なマクロをつくることが出来ます。 |
| 'Sheet1の見出しシートタブの色を変更します。 sub Mcro2 () ActiveWorkbook.sheets("Sheet1").Tab.ColorIndex = 3 End Sub |
’シートを指定せずに、選択したシートの見出しの色を変更出来るように変更します sub Mcro2 () ActiveSheet.Tab.ColorIndex = 3 End Sub |
Sheets("Sheet1")を削除し、「ActiveSheet」と入力します (ActiveWorkbookは、省略可能です。) |
| ’「B5」のセルを塗りつぶします。 Sub Mcro3 Range("B5").Interior.ColorIndex = 3 End Sub |
’「B5」セルと指定しないで、選択したセルを塗りつぶせるように変更します。 Sub Mcro3 Selection.Interior.ColorIndex = 3 End Sub |
Range(”B5”)をSelectionに変更します。 |
| アクティブセルを選択する場合 →Activecell |
| データの入力した連続したセルを選択する場合→Activecell.currentRegion |
| 選択したセル範囲を選択する場合 →Selection |