Tips

ExcelVBAを1から学ぶ! #2 ~VBEでマクロの編集~
2017.04.12

ExcelVBAを1から学ぶ! #2 ~VBEでマクロの編集~

はじめに

前回のおさらいと今回やること

前回、[開発]タブを表示して、「マクロの記録」機能を使用してみました。
今回は、前回記録したマクロを編集してみたいと思います。

VBE(Visual Basic Editor)を使う!

VBEについて

VBEとは、VBAの記述を行うエディターの名称です。一般的に、VBEを使用してVBAの編集を行います。

VBEの起動方法

VBEの起動方法は以下の通りです。

手順1. [開発]タブのVisual Basicアイコンをクリックする。

たったこれだけです。
前回使用したファイルと同様のものを使用して頂いていれば、標準モジュールというフォルダーの下にModule1というモジュールが存在するはずです。

この「Module1」こそが、前回記録したマクロの正体です。今回は、この「Module1」を編集してみたいと思います。

マクロの編集をする

では早速、前回記録したマクロを編集してみたいと思います。
まずは目的を定めましょう。

図のように、セルD1~D10に1から10までの数字を入力しておきます。
マクロを実行すると、1から10まですべて赤字・中央揃えになるように編集していきます。

ソースを貼っておくので、差分を記述してみてください。

Option Explicit

Sub Macro1()
'
' Macro1 Macro
'

Dim i As Integer
    
For i = 1 To 10

    Cells(i, 4).Select

    With Selection.Font
        .Color = -16776961
        .TintAndShade = 0
    End With
    With Selection
        .HorizontalAlignment = xlCenter
        .VerticalAlignment = xlCenter
        .WrapText = False
        .Orientation = 0
        .AddIndent = False
        .IndentLevel = 0
        .ShrinkToFit = False
        .ReadingOrder = xlContext
        .MergeCells = False
    End With

Next
    
End Sub

分からなくなってしまった場合は、コピペすればもう一度動くようになるので、怖がらずにじゃんじゃん編集しましょう。
まだ各記述が何を意味しているのかは分からなくても結構です。今後少しずつ見ていきます。

編集が終わったら、エクセルのシートに戻って、前回と同じ要領でマクロを実行してみましょう。

どうでしょうか?思い通りの動作になりましたか?ならなかった場合は、もう一度VBEに戻ってソースの確認をしてみてください。

マクロの記録のデメリット

前回記録したマクロをVBEで開くことによって分かった、「マクロの記録」機能のデメリットは以下の通りです。

不必要な記述が含まれてしまう

前回記録した操作は、「文字を赤字にして、中央揃えにする」という2工程の操作です。
しかし、VBEで見たソースはどうだったでしょうか?何行にも渡って処理が記述されていました。
実際には、もっと少ない行数で条件を満たすプログラムを作成することができます。

複雑な処理が記録できない

前回記録したマクロは、アクティブなセルを自分で指定して実行していました。
なので、今回のような連続した処理をきれいに記述することができません。(当然、ごり押しでセルをひとつひとつ色を変えて中央揃えにして…と記録すれば目的を満たすマクロは記録できますが…)
マクロの記録では、条件分岐やループ処理といった動作を記録することができないので、ソースが複雑になったり、手作業で補助する(例えば、セルを指定する等)必要がでてきてしまいます。

デメリットはあれど…

デメリットがあることは事実ですが、有効に使える機能であることは間違いありません。マクロの記録によって生成されたソースを参考にして、プログラムを作成することができます。
今後、VBAのプログラムを組む時の参考として、マクロの記録を使ってみてください。

今回のまとめ

今回は、VBEを使用してマクロの編集を行ってみました。
便利に使用できる「マクロの記録」機能ですが、デメリットも紹介しました。
より複雑だったり、柔軟なプログラムを作成するためには、VBEを使用してVBAの作成を行う必要があることはお分かりいただけたかと思います。
次回は、ExcelVBAでよく出てくる用語について学習していきます。

excel_VBAを学んで業務効率化!

excel-vba入門 連載

Recent News

Recent Tips

Tag Search