エクセルマクロの始め方

全6回で勉強するプログラミング、1回目です。エクセルのマクロ機能の始め方・使い方から始め、簡単なプログラムを実行します。全体の流れを把握しましょう。

マクロの自動記録

プログラムを書く前に、まずはマクロの自動記録を使用したいと思います。

マクロの自動記録とは

マクロの自動記録というのは、エクセル上で行う動作をプログラミング言語のVBAで出力する機能です。つまり、プログラムを自動で生成してくれる機能です。

スクロールしたり、セルのどこかをクリックするというすべての動作が記録されます。今回は、分かりやすくするために、下の内容で動作を限定して記録します。記録される前に7つの手順を確認してください。

  1. エクセルのSheet1のセル「F1」(または「R1C6」)を選択する。
  2. 数字の1を入力する。
  3. 下のセルを選択する。
  4. 数字の2を入力する。
  5. 下のセルを選択する。
  6. 数字の3を入力する。
  7. 下のセルを選択する。

マクロの自動記録を実行する

まず、エクセルのSheet1のセルA1が選択されていることを確認します。次にメニューの中から「開発」- 「マクロの記録」(もしくは「表示」-「マクロ」-「マクロの記録」)を選択します。下の図のように小さな画面が表示されます。何もせずに”OK”をクリックします。

これだけで記録が始まります。上記の7ステップを順番に行ってください。終わったらマクロを終了します。

マクロの自動記録を終了する

終了するにはメニューの「開発」- 「記録終了」を選択します。(もしくは「表示」-「マクロ」-「記録終了」)

記録された中身を確認する

実際に記録された中身を確認します。

マクロを表示する

マクロを表示するにはエクセル上で「alt」キーと[F11]キーを同時に押します。下のような画面が表示されます。

上記の図では、左側の上部に「プロジェクト- ○○○○○○」、下部には「プロパティ- ○○○○○○」という小さなウィンドウが表示されてます。「プロジェクト- ○○○○○○」ウインドウがない場合はメニューの「表示」から「プロジェクトエクスプローラ」を選択て表示してください。

「プロジェクト- ○○○○○○」という小さなウインドウの中に「標準モジュール」
を探して左側の”+”ボタンをクリックすると「Module1」という文字が現れます。(下の図)

さらに「Module1」をダブルクリックすると右側にモジュールが表示されます。これが「記録されたもの」です。(下の図)

「記録されたもの」をよく見てみましょう。

赤い数字は説明用に追加したものです。1から7の数字は上記の7ステップに対応してます。現段階でこの文字列を理解する必要はありません。何をしているものかがわかれば十分です。

マクロの実行

ここでマクロの理解を深めるために作ったマクロを実行してみたいと思います。次の手順で実行してみてください。

  1. Sheet1に戻って先ほど入力した数字をすべて消しましょう。
  2. メニューの「開発」-「マクロ」または「表示」-「マクロ」-「マクロの表示」を選択してマクロを表示させます。
  3. マクロ画面には先ほど作ったマクロ(Macro1)が表示されてます。右側の”実行”ボタンをクリックします。

先ほど削除した数字が自動で入力されました。

プログラムの命令

もう一度「記録されたもの」を見てみましょう。

「Sub Macro1()」から「End Sub」の間にある7行の各行が命令です。(緑色の文字はコメントといって実行されません。詳しくはこちら:コメントこのプログラムの命令は上から順番に実行されます。

第2回、第3回で勉強しますが、プログラムの命令は今回のように順番に実行されるものの他に、条件分岐や繰返しというものがあります。条件分岐や繰返しの命令の場合はマクロ機能を使って自動生成することができません。

そこで、ここからは次回の講座に向けてプログラムの書く準備を始めたいと思います。次に進む前に、エクセルを適当な名前を付けて保存してください。その際、「ファイルの種類」で「Excelマクロ有効ブック」を選択してください。

プログラムの書き方

先ほどまではSheet1のF列に1,2,3という数字を入力するマクロを作りました。今度はA列に1から10の数字を入力するプログラムを作ります。

新しいプログラムの作成

次のように順次進めてください。

  1. 先ほどのマクロの中身が表示されていた画面が表示されていなければ「Alt+F11」で表示させます。
  2. 左側の「プロジェクト-」の標準モジュールを選択して右クリックします。
  3. 下図のように「挿入」-「標準モジュール」を選択します。

下のような画面が表示されます。右側の白い画面にプログラムを書いていきます。

プログラムの始まりと終わり

エクセルVBAの場合、プログラムの始まりは次のような構文になります。
Sub プログラム名()

プログラム名は任意ですが、各言語独自の命名規則があります。これについてはおいおい説明していきます。今回は”Test”というプログラム名を付けます。そしてプログラムは次の構文で終了します。
End Sub

それでは書いてみましょう。

たったの2行で短いので間違えることは少ないと思いますが、タイプミスなどあると、次のようなメッセージが表示されることがあります。

上記の図でいうと「End sun」と入力したためエラーがでています。エクセルでは自動構文チェック機能があって、このようなメッセージがでて入力が中断されることがあります。この機能を無効にしたい場合はこちらを参考にしてください:自動構文チェック

次にプログラム本体を書いていきます。先ほどのマクロの出力をコピペしても悪くはないのですが、ここでは以下の文を書いてください。すべて半角です。
コピペしてもOKです。

Range(“A1”) = 1
Range(“A2”) = 2
Range(“A3”) = 3
Range(“A4”) = 4
Range(“A5”) = 5
Range(“A6”) = 6
Range(“A7”) = 7
Range(“A8”) = 8
Range(“A9”) = 9
Range(“A10”) = 10

実行してみます。F5をクリックして今作ったプログラムを選択し”実行”ボタンをクリックします。

思惑通りに1から10の数字が入力されたでしょうか?

実はこのプログラムは一つ抜けていることがあって、プログラムを実行するときに表示されているシートに入力されるようになってます。Sheet1に入力させるためには、次のように書く必要があります。

Sheet1以外のシートを表示して実行しても、Sheet1に値が設定されると思います。

今回はこれまでです。お疲れさまでした。
次回はもう少し複雑になりますが、またお付き合いください。


※「マクロの記録」が見当たらない場合。
「マクロの記録」を探しても見当たらない場合はメニューバーの何もないところで右クリックして「ユーザー設定」を選択し、「マクロ」メニューが表示されるように設定します。

※コメント:VBAでは’(シングルクォート)に続く文字列をコメントとして認識してプログラム実行されないように無視されます。これは他のプログラム言語も同様です。VBAは’(シングルクォート)がコメント行になりますが、//や/*といった文字が使われる言語もあります。

※自動構文チェックを無効にするには:メニューの「オプション」を選択します。編集タブの「自動構文チェック」のチェックを外してOKします。