Excel VBA | 超初心者(Excel操作+マクロ体験):VBA基礎環境 – プロシージャ作成

Excel VBA VBA
スポンサーリンク

Excel VBAと「プロシージャ」の関係をイメージする

Excel VBA では、コードはバラバラに書くのではなく、「プロシージャ」という単位にまとめて書きます。
プロシージャは「意味のあるひと固まりの処理」のことです。

人間の言葉にすると、こうなります。
「この一連の作業を、まとめて『この名前の手順』として登録しておく」
その「名前付きの手順」が、VBAでいうプロシージャです。

Excelでマクロを実行するとき、実行対象になるのは「プロシージャ」です。
つまり、プロシージャを作れるようになる=自分でマクロを作れるようになる、ということです。

プロシージャにはどんな種類があるか

SubプロシージャとFunctionプロシージャ

VBAのプロシージャには主に二種類あります。

Subプロシージャ
Functionプロシージャ

超初心者の段階では、まず Sub プロシージャだけをしっかり押さえれば十分です。
Function は「値を返す関数」で、少し先のステップで学ぶイメージでOKです。

ここでは「プロシージャ作成=Subプロシージャを作ること」として説明していきます。

Subプロシージャの基本構造をかみ砕く

形(構文)をまず覚える

Subプロシージャは、必ず次のような形で書きます。

Sub プロシージャ名()

    ' ここに処理を書く

End Sub
VB

上から順に意味を分解すると、こうなります。

Sub … ()
「ここから一つの手順(プロシージャ)が始まります」という宣言です。
「プロシージャ名」の部分は、あなたが自由に決める名前です。

(中身)
実際にやりたい処理を、1行ずつ書いていきます。

End Sub
「このプロシージャはここで終わりです」という区切りです。

この「Sub ~ End Sub」で一つの箱を作り、その中に命令を並べていく、というイメージです。

プロシージャ名の役割

プロシージャ名は、次の二つの意味を持ちます。

マクロ一覧に表示される名前
他のプロシージャから呼び出すときの「呼び名」

たとえば、次のように書いたとします。

Sub Greeting()

    MsgBox "こんにちは!"

End Sub
VB

この場合、「Greeting」がプロシージャ名です。
マクロの実行画面にも「Greeting」と表示されますし、他のプロシージャから呼び出すときも Greeting という名前を使います。

実際にプロシージャを作ってみる(例題)

ここからは、標準モジュールに Subプロシージャを作る流れを、手を動かすイメージで説明します。

例題1:メッセージを表示するだけのプロシージャ

標準モジュール(Module1 など)のコードウィンドウに、次のコードを書いてみてください。

Sub あいさつ()

    MsgBox "Excel VBAの世界へようこそ!"

End Sub
VB

このプロシージャは、「あいさつ」という名前のマクロです。
実行すると、メッセージボックスで「Excel VBAの世界へようこそ!」と表示されます。

中身を分解すると、こうなります。

Sub あいさつ()
プロシージャの開始宣言。名前は「あいさつ」。

MsgBox “Excel VBAの世界へようこそ!”
メッセージボックスを表示する命令。
ダブルクォーテーションで囲まれた文字列が、そのまま表示されます。

End Sub
プロシージャの終わり。

VBEでこのプロシージャの中にカーソルを置き、F5キーを押すと実行できます。
また、Excel側で「開発タブ → マクロ」から「あいさつ」を選んで実行することもできます。

例題2:セルに値を書き込むプロシージャ

次に、少しだけ「Excelらしい」処理をしてみます。

Sub セルに書き込む()

    Range("A1").Value = "プロシージャから書き込みました"

End Sub
VB

このプロシージャを実行すると、アクティブなシートの A1 セルに文字が入ります。

Range(“A1”).Value = “プロシージャから書き込みました”
Range(“A1”) は「A1セル」を表し、.Value はそのセルの中身(値)を意味します。
= の右側に書いた文字列が、そのままセルにセットされます。

ここまでできれば、「プロシージャを作って、Excelを動かす」という感覚がかなりつかめてきます。

プロシージャの役割をもう少し深掘りする

「実行の単位」としてのプロシージャ

Subプロシージャは、「マクロを実行する単位」です。

Excelの「マクロ」画面に表示されるのは、Subプロシージャだけです。
つまり、「一つのマクロ=一つのSubプロシージャ」と考えてOKです。

たとえば、次のように二つのプロシージャを書いたとします。

Sub A1に書く()

    Range("A1").Value = "A1です"

End Sub

Sub B1に書く()

    Range("B1").Value = "B1です"

End Sub
VB

マクロの実行画面には、「A1に書く」と「B1に書く」が別々に表示されます。
どちらを実行するかを選べる、ということは、「処理のまとまりごとにプロシージャを分けられる」ということです。

「呼び出しの単位」としてのプロシージャ

プロシージャは、他のプロシージャから呼び出すこともできます。

たとえば、次のように書いてみます。

Sub あいさつ()

    MsgBox "こんにちは!"

End Sub

Sub メイン処理()

    あいさつ
    Range("A1").Value = "あいさつが終わりました"

End Sub
VB

ここでは、「メイン処理」というプロシージャの中から「あいさつ」を呼び出しています。
メイン処理を実行すると、まずメッセージボックスが出て、その後 A1 セルに文字が入ります。

ポイントは、「あいさつ」という処理を一か所にまとめておくことで、
必要なところから何度でも呼び出せる、ということです。

この「処理を分割して、名前を付けて呼び出す」という考え方が、プログラミングの超重要な基礎です。

引数付きプロシージャの超入門

少しだけステップアップして、「引数付き」のプロシージャも触れてみます。

名前を変えてあいさつする例

Sub あいさつする(名前 As String)

    MsgBox "こんにちは、" & 名前 & "さん!"

End Sub

Sub テスト()

    あいさつする "山田"
    あいさつする "佐藤"

End Sub
VB

あいさつする というプロシージャは、「名前」という材料(引数)を受け取ります。
テスト を実行すると、「こんにちは、山田さん!」「こんにちは、佐藤さん!」と順番に表示されます。

ここでのポイントは二つです。

1つ目:プロシージャに「材料(引数)」を渡せること。
2つ目:同じ処理を、渡す値だけ変えて何度も使い回せること。

超初心者のうちは、「引数=そのプロシージャに渡す情報」とだけ覚えておけば十分です。

まとめと、次の一歩

今日おさえてほしいこと

プロシージャとは、「意味のあるひと固まりの処理」に名前を付けたもの。
Subプロシージャは、マクロを実行する基本単位で、形は「Sub ~ End Sub」。
プロシージャ名は、マクロ一覧に出る名前であり、他のプロシージャから呼び出すときの「呼び名」。
標準モジュールに Subプロシージャを書けば、Excelを自動で動かすマクロになる。
プロシージャ同士を呼び合うことで、処理を分割して分かりやすく整理できる。

ここまで理解できていれば、「プロシージャ作成でつまずく段階」はほぼ卒業です。

次の練習アイデア

一つの標準モジュールの中に、次の三つのプロシージャを書いてみてください。

1つ目:メッセージを出すだけの「あいさつ」。
2つ目:A1とB1に文字を書く「セルに書く」。
3つ目:上の二つを順番に呼び出す「メイン処理」。

メイン処理だけを実行して、「あ、複数のプロシージャが連携して動いているな」と感じられたら、
もう立派に「プロシージャを作って組み立てられる人」です。

タイトルとURLをコピーしました