マクロでできたVBAコードの編集3

スポンサーリンク

マクロで作成したVBAコードを見やすくする

前回コードを少し変更することでマクロが見やすくなることを書きました。
ブログに載せるのにちょうど都合のよいマクロを作成できなかったこともあり、今回はその他の変更点をずらっと並べてみます。

VBAコードの内容確認と修正方法の例

①複数列の選択はRangeを用います。

前回に1列を指定する際は数字で置き換えられるとお伝えしました。
例えばColumns(“A:A”)ならColumns(1)という風にできます。
複数列の場合は少し異なっていて、「列から列までの範囲」という指定の仕方になります。
Columns(“A:M”)は1列目から13列目なのでRange(columns(1),Columns(13))というように、開始位置と終了位置を「,」で挟んで()の中に入れます。

Columns(“A:M”).Select’A列~M列を選択
Selection.Copy’選択範囲をコピー

Columns(“A:M”).Copy’前回のSelectの省略

Range(columns(1),Columns(13)).Copy’1列目から13列目までコピー

②Application.CutCopyMode = Falseは削除してOK

マクロでの記録ではコピーするときに前回のコピーした内容を削除するという手順が入ります。
新しい範囲をコピーすると古いコピー内容は自動で消去されるので、コードは消して大丈夫です。

③ActiveCell.FormulaR1C1 = “1”

アクティブになっているセルに1を入れるコードです。
FormulaR1C1は通常計算式を入れるコードで、数字を入れるだけなら.Value=1に変更できます。

Range(“A3”).Select’A3を選択する
ActiveCell.FormulaR1C1 = “1”

Range(“A3”).Value = 1

④さらにRange(“A3”)はA3のセルを指しますが、それを数字で表すように変更しておきます。

Cells(○,×)は上から○番目の行の左から×番目の列にあるセルを意味します。
このように数字で表すようにしておくと応用が効きやすくなります。

Range(“A3”).Value = 1

Cells(3,1).Value = 1

⑤ActiveWindow.SmallScroll Down:=162, ActiveWindow.LargeScroll Down:=1などは削除する。

マクロを記録する際に時々記録されますが、これは画面をスクロールした履歴がコードにされたものです。手作業では必要な行程ですが、プログラムでは直接対象セルや範囲を指定しますので、スクロールの操作は必要ありません。プログラムの実行時間が長くなる元凶になるので、全て削除してしまいましょう。

⑥シート名の固有名詞は別の名前に置き換える。

マクロを記録しているときにほかのシートを選択したり、並び替えを行ったりした場合に、Worksheets(“結果”)やsheets(“結果”)のようにシート名入ることがあります。

マクロを実行するとき、毎回シート名が固定されているのであれば問題ないですが、毎回同じシートの名前ではないという場合、この部分を修正しておかないと応用できなくなります。

シートの指定には①シート名で指定する方法と②シートの順番で指定する方法があります。
シート名で指定する場合Worksheets(“結果”)のように()の中で「””」を用いシート名を記載します。
シートの順序で表す場合はWorksheets(1)のように数字を()の中に入れます。
これにより左から何番目のシートかを指定することができます。

Worksheets(“結果”).Select’結果シートを選択

Worksheets(1).Select’左から1つ目のシートを選択

ちなみにWorksheets(1)とsheets(1)は同じ意味で、WorksheetsとSheetsはどちらを用いても変わりません。

これくらい変更を加えることを覚えておくと、組んだマクロを有効に使えますし、繰り返しを入れたり条件分岐を入れたりするときにも簡単に作り変えることができます。

コメント