Excel活用

【Excel】マクロをVBAで編集する方法

前回の記事ではマクロを組んでみた話でした。

今回はそのマクロの設計図であるVBAを解読してみましょう。

none
none
マクロとVBAの違いとは・・・?

酒井たかま
酒井たかま
こちらのツイートをご覧ください。(良く分かってなかった)

@_reime さん、ありがとうございます。

マクロを動かすためのプログラム言語がVBA、今日はそのVBAの中身を見ていきましょう!

VBA編集画面の開き方

VBAの編集画面を開くには開発タブの「Visual Basic」から入っていきます。

すると、VBAの編集画面が開きます。

こんな画面が開きます。この赤枠のところがマクロの処理内容を記述したVBAです。

none
none
???(にゃにこれ、おいしいの?)

酒井たかま
酒井たかま
ですよね。笑
では、酒井なりの読み方を解説していきますね。

VBAの読み方

酒井なりの読み方は、「VBAはブロックに分けて読む」です。

どういうことかというと、こんな感じに分けていきます。

このように分けてやると、それぞれの文章の役割が見えてきます。

では一つ一つ見ていきましょう。

【緑】マクロの開始宣言と終了宣言

まず、一番基本的なルールです。

マクロは開始宣言「Sub マクロタイトル()」で始まり、終了宣言「End Sub」で終わる、2つでセットの構文です。

これが無いと始まらないし終わらないってやつですね。

【青】マクロを実行する範囲の選択

今回の場合だと、特定のセルに対してコピー・ペースト・削除といった処理を行いますので、まずは実行する範囲を選択する必要があります。

今回の場合青枠がそれにあたります。

例:Range(“F3:F7”).Select

こんな感じです。選択範囲を変えたい場合はここで書き換えたらいいのです。

CTRLキーを使った範囲選択もVBAで記述できるので、それはまたの機会に解説したいと思います。

【赤】選択範囲に対する処理の実行

次に、選択範囲に対する処理を実行するコードがあります。

例:Selection.copy  訳:選択範囲をコピーする(そのまんまw)

そう、そのまんまなんです。余談ですが、VBAは記述量が多いので読もうとする気力がそがれるのですが、ブロックに分けて一つ一つ見ていくと、それほど難しいことは書いてないのです。

他の例も見ていきましょう。

例:Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False

訳:選択範囲に数値貼り付けする。

これはややこしくて自力で書くことは難しいかもしれませんが、ここは「マクロの記録」を使って作れば問題なく作れるでしょう。

ちなみに「 _ 」(アンダーバー)は文中で改行したい場合に使います。

例:Selection.ClearContents 訳:選択範囲を消す

これもそのまんまですね。

ここで大事なことは、「範囲選択→処理実行」という流れがあることを知ることです。

条件式を組んだVBA例

VBAでは、IF関数と同じような処理もできます。いわゆる条件分岐というやつです。

これは、以前法人番号検索ツールで作ったマクロのVBAです。

では実際にVBAを見てみましょう。

ちなみにここでは翻訳内容をメモとして残しています。

文頭に「’」を付けるとマクロを実行する上で無視して次に進むので、メモとして処理内容を残すことができます。(この方が分かりやすいですね)

これをブロック分けするとこうなります。

緑と赤は上と同じです。緑はマクロの開始終了宣言、赤は実行する処理を示しています。

さっきと違うは青です。これについて見ていきましょう。

条件式「If 〇〇 Then ~ Else ~ End If」の使い方

この場合、青枠は条件式を表していて、3つでセットの構文です。

If 条件式 
Then
 条件を満たす場合の処理 
Else 
 条件を満たさない場合の処理
End If

このケースでは、すべて「And」でくくってて、中身が「””」(空欄)という条件を指定しています。

そしてThen以下で条件を満たすときの処理「メッセージボックスを表示する」を、Else以下で条件を満たさないときの処理「開いているブックの更新」を記述し、「End If」で締めくくっているわけです。

ちなみに、どちらも特定のセルに対して実行する処理ではないので、セルの範囲選択する処理は不要のため記述がありません。

まとめ

VBAを読むポイントは3つです。

  1. ブロックに分ける。
  2. ブロックの役割を色分けする。
  3. 選択と処理、条件と処理などブロックごとの組み合わせで考える。

そしてVBAを書くコツはこれです。

「マクロの記録」でパーツを作ってVBAで整える!

例外はもちろんありますが、個人的にはこれでだいたいのことで出来るようになると思います。

まずは「マクロの記録」でどんどん作り、VBAをちょこっと書き換えて使いやすくする、みたいなことを繰り返していけば、マクロを使いこなせるようになってるのではないでしょうか。

マクロの記録とVBA

酒井たかま
酒井たかま
とりあえず「マクロの記録」から始めてみませんか?