マクロで作成したVBAコードの編集2~コードの編集~

スポンサーリンク

前書き

前回は作成したマクロがどこに表示されているかを載せました。
今回はマクロのコードの説明と修正例を挙げていきます。
マクロの記載されている場所を確認する場合は前回のページを参考にしてください。

 

記載されているVBAコードの確認

前回作成した日付の並びを逆にするマクロの中身は以下のようになっています。

Sub Macro1()

’ Macro1 Macro

Columns(“M:M”).Select
Selection.Cut
Columns(“G:G”).Select
Selection.Insert Shift:=xlToRight
Columns(“M:M”).Select
Selection.Cut
Columns(“H:H”).Select
Selection.Insert Shift:=xlToRight
Columns(“M:M”).Select
Selection.Cut
Columns(“I:I”).Select
Selection.Insert Shift:=xlToRight
Columns(“M:M”).Select
Selection.Cut
Columns(“J:J”).Select
Selection.Insert Shift:=xlToRight
Columns(“M:M”).Select
Selection.Cut
Columns(“K:K”).Select
Selection.Insert Shift:=xlToRight
Columns(“M:M”).Select
Selection.Cut
Columns(“L:L”).Select
Selection.Insert Shift:=xlToRight 

End Sub

スポンサーリンク

VBAコードの内容確認

記載の法則を順に確認します。

①1つのマクロはSub~End Subまでで記載されています。
マクロは1つのモジュール(Module)の中に1つずつ作成されますが、Moduleの中にマクロのコードを2つ以上移すことも可能です。コード部分を選択してコピペできます。

②subのあとにマクロの名前が入ります。
今回の名前はMacro1になっています。名前は自由ですが、最初の一文字を数字にはできません。

③Columns(“M:M”).Select
M列を選択するという意味です。

④Selection.copy , Selection.cut
選択範囲をコピーする、切り取るという命令文です。

⑤Selection.Insert Shift:=xlToRight
選択範囲にコピーした内容を挿入する命令文です。後半は右にずらすという意味になります。

 

コードの修正

作ったマクロを編集する場合、おおよそ編集する内容は決まってきます。
うまく動いているのに変更なんて必要ないじゃん!と思うかもしれませんが、このステップをうまく行うことでマクロの実行時間を短くしたり、応用がきくように改良することができます。
今回はおすすめのマクロの修正点をいくつかお伝えします。

①マクロを整理する。

マクロをたくさん作った場合、関連するものを1つのファイルや1つのモジュール、一つのマクロにまとめると管理しやすくなります。
マクロの記述内容をコピーしてまとめたいところに貼り付けるだけでまとめることができます。

今回のように一連の流れを途中で中断して2個に分けたマクロは一つに合体しておくと便利です。

②Selectionはまとめられる

Selection.copyは以下のように変更することができます。

~Selection
Selection.Copy

~.Copy

マクロを記録する際は手作業なので、コピーの操作をするときにセルを選択する必要がありますが、プログラム(マクロ)でコピーを行う場合にはセルの選択は必要ないからです。
この部分はかなりマクロのスピードアップに関わってきます。

ちなみに貼り付けの場合マクロは以下のように表示されていて、Selectionの省略方法は少し異なります。

~.Selection
Activesheet.Paste

~.PasteSpecial

Pasteに対してはSelectionなどの範囲指定は使えない(?)らしく以上のように変更するときちんと動作します。

③アルファベットの列は数字に変更できる。

マクロで列を選択した場合

Columns(“M:M”).Select

などのように表示されます。
M列の場合、13番目のアルファベットなので、次のように記載することもできます。

Columns(13).Select

このようにしておくと、のちに紹介する繰り返しの記述でとても楽になります。
というかアルファベットのままでは繰り返しが書けないと思います。

全てのプログラムを変更すると上記の通り修正すると以下のようになります。
短くなって見やすくなり、実行速度も上がります。(目で追えなくなりますが)
またここまで来ればもっと修正して、5行くらいに縮められます。その方法はまた別の機会にお伝えします。

Option Explicit

Sub Macro1の2()

’ Macro1 Macro


Columns(13).Cut
Columns(7).Insert Shift:=xlToRight
Columns(13).Cut
Columns(8).Insert Shift:=xlToRight
Columns(13).Cut
Columns(9).Insert Shift:=xlToRight
Columns(13).Cut
Columns(10).Insert Shift:=xlToRight
Columns(13).Cut
Columns(11).Insert Shift:=xlToRight
Columns(13).Cut
Columns(12).Insert Shift:=xlToRight

End Sub

コメント