G. マクロを作成し、実行し、保存する

(vba13)
(vba13)

はじめてのマクロを作って、実行し、保存してみます。 

 

マクロを自分で作ることで、基本的なことが理解でき、マクロのことがよりわかるようになるのは間違いない。

 

いずれ Copilot にマクロコードの作成をお願いする場合でも、自分でやらなければならない項目もあるので、これら基本的なことを学びます。

 

G-1. マクロを作成する

  1.  Excel で新規のブックを開く
  1. 「Alt」+「F11」キーを押して、VBE を起動する
(C2L12_01) VBE を起動する
(C2L12_01) VBE を起動する
  1. 起動した VBE メニューの「挿入」-「標準モジュール」をクリック

標準モジュールを挿入する

Excel マクロのコードを入力する場所「標準モジュール」は、VBEのメニュー「挿入」-「標準モジュール」をクリックすると作成できる。

(C2L12_02) 標準モジュールを挿入する
(C2L12_02) 標準モジュールを挿入する
(C2L12_04)
(C2L12_04)
  1. 「標準モジュール」が挿入された
(C2L12_03) 標準モジュールが挿入された
(C2L12_03) 標準モジュールが挿入された

右側のコードエリアは真っ白になっているが、このあとここにコードを入力する。

標準モジュールの削除や名前の変更

挿入した標準モジュールを削除するとか、名前を変更する操作については、本ページの「G-4. 標準モジュールの削除と名前の変更」を参照する。

  1.  これからサブプロシージャを入力するので、まず「sub」と入力する

サブプロシージャを入力する

Excel マクロの最小単位は「Sub プロシージャ」と呼ばれる、ひとまとまりのプログラムだ。 

Sub プロシージャの構文:

(C3L13_01)
(C3L13_01)

Sub」ではじまる行が Sub プロシージャの最初で、「End Sub」の行が Sub プロシージャの最後だ。   

 

Sub プロシージャの中には、最低1行の指示を書く。

 

複数な処理を行うマクロでは、複数の Sub プロシージャを組み合わせて作る。

Sub など VBA のキーワードは小文字で入力する

図で示すように VBA  のキーワード sub などの入力は全てアルファベットの小文字で入力する.

 

入力した文字のスペルがキーワードとして正しければ、カーソルが他の行に移動したときに先頭文字が大文字に変換される。

 

なお「"(ダブルクオーテーション)」で囲まれたものは、単なる文字列なので変換は行われない。

(C3L15_01)「sub」と入力する
(C3L15_01)「sub」と入力する

VBA のキーワードのつもりで入力していても合致しなければ先頭文字が大文字に自動変更されないことで、VBA のキーワード入力時のミスをすぐに確認できる。

尚、どのようにでもできる変数は、変数宣言をもともと小文字で宣言しておけば、自動で先頭文字が大文字に変更されない。(先頭文字を含めて大文字で宣言した変数はその通りの入力が必要。)

常に小文字で入力するのをクセにしよう。

 

  1.  sub プロシージャ名を入力する

Sub に続き「はじめてのマクロ」と入力する。

これが、Sub プロシージャの名前で、「マクロ」ダイアログボックスに表示されるマクロ名になる。 

(C3L15_02) Sub プロシージャ名を入力する
(C3L15_02) Sub プロシージャ名を入力する

Sub プロシージャ名の制限

プロシージャ名に、アルファベット、漢字、ひらがな、カタカナ、数字、「_(アンダーバー)」を使えるが、他の記号は使えないし、

 

1文字目には数字と「_」は使えない。

 

また半角255文字を超える名前を付けることもできない。

  1. 「Enter」キーを押すと「()」と「End Sub」が自動入力される
(C3L15_03) エンターキーで、自動で先頭文字の大文字変換と対のキーワードの入力がなされる
(C3L15_03) エンターキーで、自動で先頭文字の大文字変換と対のキーワードの入力がなされる
  1.  Sub と End Sub の間に「代入文」2行を入力する
(C3L15_04) 代入文の入力
(C3L15_04) 代入文の入力

代入文とは

「=」の左側の入れ物に、右側のデータを入れる処理を「代入」といい、この「=」を代入演算子という。

 

ここで使われる記号「=」は、算数でおなじみの「左のものと右のものが等しい」という意味は全く無い。

  

右から左に矢印が向かっているようなイメージを持つと良い。右から左へ向かう矢印の代わりに「=」が使われていると考えると良い。

Range および Value について

「Range」は操作対象セルを指定する記述で、ドット(.)に続けて「Value」を入力すると、セルの値を扱えるようになる。「.」は、日本語にすると「の」と訳せると、当面は考えても良い。なので、「Range("A1").Value」は「Range("A1") の Value」つまり「A1という(セル)範囲の値」という意味になる。

 

このコードを「=」の左側に置き、右側に数値や文字列を置くと、セルにデータを代入する命令になり、データが書き込まれることになる。 

 

2行目の「Range("A1").Value = 100」は、セル A1 に「100」を代入し、3行目の「Range("B1").Value = "合格"」は、セル B1 に「合格」という文字列を代入する命令だ。

自動メンバー表示機能

「range("A1").」「range("B1").」まで入力したときに、ドロップダウンリストが表示される。

 

「range("A1").」のあとに続く単語は限られているので、続く可能性のある単語だけが一覧表示される。この機能を「自動メンバー表示」という。

 

ドロップダウン表示されたあとで「v」キーを押すと「V」で始まる単語だけが選択表示された状態になるので、正しい単語 Value を選択しやすくなる。

文字列と数値の違い

数値の場合は、「"(ダブルクォーテーション)」で括る必要は無く、「100」のままで良く、文字列の場合は「"」でくくり「"合格"」とする。

  1.  インデントして読みやすくする
(C3L18_01) インデントで見やすくする
(C3L18_01) インデントで見やすくする
  1.  コメントを入れる
(C3L18_02) コメントの入力
(C3L18_02) コメントの入力

これにて、一つのマクロプロシージャが作成されたことになる。

G-2. 作成したばかりのマクロを実行してみる

  1.  Excel と VBE の両方が見えるように配置する

Excel の上に VBE が重なって表示されている状態なので、両方の画面が見えている状態にしておく。 

 

今回は、Excel 画面の A1 セルと B1 セルだけが見えればよいが、両方とも大幅の領域を表示するには、PC 一台の画面を半分に分けて左に Excel、右に VBE 画面を表示することでも良い。また外部モニターを使用できる環境であれば、PC画面と外部モニター画面にそれぞれ Excel 画面、VBE 画面を表示することでも可能。 

(C3L17_01) Excel と VBE 両方が見えるように配置する
(C3L17_01) Excel と VBE 両方が見えるように配置する
  1.  Sub プロシージャ内にカーソルを置いて [F5] キーを押す

[F5] キーは、VBEでは「実行」を意味している。

(C3L17_02) Sub プロシージャ内にカーソルを置いて [F5] キーを押す
(C3L17_02) Sub プロシージャ内にカーソルを置いて [F5] キーを押す

G-3. 作成したマクロを保存する

  1.  「名前を付けて保存」ダイアログで保存先を指定する
(C3L16_01)「名前を付けて保存」ダイアログで保存先を指定する
(C3L16_01)「名前を付けて保存」ダイアログで保存先を指定する

「名前を付けて保存」ダイアログ

Excel マクロは Excel ファイルに含まれているため、Excel からでも VBE からでも保存できる。VBE には「名前を付けて保存」コマンドは用意されてなく、はじめて「上書き保存」を実行した時には「名前を付けて保存」ダイアログボックスが表示される。

  1.  ファイルの種類などを指定して保存する
(C3L16_02)「ファイルの種類」「ファイル名」を指定する
(C3L16_02)「ファイルの種類」「ファイル名」を指定する

保存するファイル形式に注意

マクロを含むブックは、拡張子「.xlsm」で保存する事。

 

マクロを含んだブックを、通常の「.xlsx」で保存しようとすると、「次の機能はマクロなしのブックに保存できません」というメッセージが表示され、モジュールが削除され、せっかく作ったマクロが消えてしまう。

 

「.xslm」で保存した場合、通常の「.xslx」ブックとは異なるアイコンになる。

(C3L16_04) Excel ファイルでのアイコンの違い
(C3L16_04) Excel ファイルでのアイコンの違い
(C3L16_03)
(C3L16_03)

G-4. 標準モジュールの削除と名前の変更

  • 標準モジュールを削除する
  1. プロジェクトエクスプローラーで、削除したいモジュール(ここでは Module1 とします)を右クリックする。
  2. 表示されるメニューから「Module1 の解放」を選択する。
  3. 「削除する前に Module1 をエクスポートしますか?」とのメッセージが表示されるので、ここで「いいえ」をクリックすうことで、Module1を削除できる。
(C3L16_05) 標準モジュールの削除
(C3L16_05) 標準モジュールの削除
  • 標準モジュールの名前を変更する

VBE のプロパティウィンドウを使って、(オブジェクト名)欄に入力することで、モジュール名を変更できる。

(C3L16_06) 標準モジュールの名前を変更する
(C3L16_06) 標準モジュールの名前を変更する