ExcelVBA -Part2

#小室 #施設整備 #パソコン #社内発信 #プログラミング

前回更新から大分日が空いてしまいましたが今回もExcelVBAについてお話していきたいと思います。

前回のおさらいはここから確認して下さい!


■プロシージャとモジュール

VBAをやる上で絶対に必要不可欠なものがプロシージャとモジュールというものです。

それぞれどういったものなのか説明していきます。


「プロシージャ」とは

プログラムのまとまりです。英語を直訳すると「手続き」というらしいですね。

ExcelVBAにおいてもプロシージャとはまさに手続きのようなものです。

例えば「A1のセルに’1’という数字を入力する」という手続きに名前を付けて保存されたもの。こういったまとまりを「プロシージャ」と言います。

そして、その「A1のセルに’1’という数字を入力する」という振る舞いをするプログラムに「A1セルに何か入力するプログラム」という名前を付けるとします。

この場合は「A1セルに何か入力するプログラム」という名前のプロシージャとなります。


「モジュール」とは

複数のプロシージャを格納しておく場所になります。

例えて言うならモジュールは「アパート」や「マンション」、プロシージャは「その中の1室」といった所でしょうか。

説明だけでは何ともなのでモジュールをアパートに見立ててプログラムを書いてみましょう。


■モジュールの作成

上のメニューから挿入→標準モジュールを押すか、プロジェクトというウィンドウを右クリック→挿入→標準モジュールを押す事で新しいモジュールを作成できます。

モジュールを追加するとこんな感じになります。

ではわかりやすくモジュールの名前を変えてみます。

追加された「Module1」をクリックすると「プロパティ」のウィンドウに「(オブジェクト名)Module1」というものが表示されたと思います。ここの欄の「Module1」を変更します。

そうするとモジュールの名前が変わります。

■プロシージャの作成

では、プロシージャを作っていきます。

先ほど名前を変えた時にプロジェクトの方の表示も「Module1」から「小室アパート」に代わっていると思います。この「小室アパート」をダブルクリックしましょう。

そうすると真ん中のウィンドウが表示されたと思います。

初期の状態だと真っ白な状態ですね。

真っ白な所を一度クリックして

「sub お部屋101」と入力してEnterしましょう。そうすると

と勝手に変換されたと思います。

これがプロシージャです。この場合はSubと付くので「サブプロシージャ」と呼ばれています。

名前を付ける時に気を付けなければいけない事がモジュールやプロシージャなどの最初の一文字に数字を使えない事です。

ホントは101号室と行きたい所ですが、最初の一文字が数字になってしまうので「お部屋101」と名付けました。

ではもっと増やしていきましょう。

こんな感じです。このサブプロシージャは「小室アパート」という中にありますが、それぞれ独立しています。


■プロシージャにプログラムを書きましょう

ではせっかく部屋が出来たので人を住まわせてみましょう。

誰が住んでいるのかはご想像にお任せします。もしかしたら人ではないかも知れませんが、それぞれを実行すると指定したセルの場所(A1~A6)にアパートの住民の声が入力されます。

実際にお部屋202の住民の方を動かしてみましょう。

お部屋202の中で一度左クリックしてから上のツールバーにある再生ボタンみたいな三角マークをクリックしましょう。

という感じでそれぞれのお部屋は独立しているのでそれぞれでプログラムの実行が出来ます。

管理さんだけはまだ何も入力していませんが、管理人さんなのでここでは特別な事、全てのお部屋の住民を呼び出してもらおうと思います。

ということでプログラムを書いてみましょう。

プロシージャの呼び出しは普通にプロシージャを入力するだけでも出来ますが、今回はわかりやすいように「Call」というものを付けました。Callに続けて半角スペースを空けてからそれぞれのお部屋の名前を入力していきます。


では、管理人さんを実行してみましょう。

Excelシートのセルに全ての住人が集結しました。


■まとめ

モジュールとプロシージャというものがどういったものなのか説明させて頂きました。

簡単に言うとプロシージャは独立したプログラムの塊、モジュールはプロシージャたちが格納される大きな部屋って感じですね。

この様に、知ってみると意外と簡単!な事がたくさんあると思いますので次回更新時も読んで頂けると嬉しいです。

次回もExcelVBAについてお話していきます!




TEL:029-863-1811

  • Instagram

©Copyright 2015 REITO,all right reserved.