汎用的なマクロを作るには 34

「マクロ記録」では、操作手順がそのまま記録されます。
例えば、特定のセルやワークシートに対して動作するようにしたマクロは、限られた場所でしか利用できません。
しかし、記録されたマクロの一部を書き換えたり、次のように、マクロの記録前に、作業するシートをアクティブにすることで、汎用的に使用できるマクロにすることが出来ます。

方法1

マクロの記録前に作業するシートをアクティブにする

●特定のシートやセルに依存しないマクロを作成するには、

マクロの記録前に、作業するシートをアクティブにして、作業対象となるセル範囲やシートをあらかじめ選択した上でマクロ記録を開始します。

そうすると、他のシートでも使用できるマクロが作成できます。

方法2

直接マクロを書き換えて、汎用的なマクロに変更する場合

キーボードから「ALT」+「F11」キーを押し、VBAを起動し、既に記録されているマクロを編集します。

1.特定のセルやシート対応したマクロ 2.汎用的なマクロに変更します。
'セルの選択範囲(B3:B5)を削除します。

Sub Mcro1()

Range("B3:B5").Select

'データをクリアします。
Selection.clearContents

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