見出し画像

介護事業者のためのExcelVBA入門③~VBEの使い方とプロシージャ~

介護事業者のためのVBA講座、第3弾となります。

前回はプログラミングの基本となる考え方と、フローチャートについてお伝えしました。

この講座では、実際に「手を動かす」ことを目的として、何より、まずVBAを使ってExcelを操作してみましょう!

VBEとは

ExcelVBAは、VBEと呼ばれる、開発ツールを使ってプログラミングしてきます。

まず、Excelを開いてみましょう!(筆者の環境では、「Excel2016」を使用しています)

はい、Excelが開きました。

初期状態で、「Book1」という名称になっています。

次に「Alt」キーと「F11」を押してください。

このような画面が開いたと思います。

これが「VBE」です。

「Visual Vasic Editor」の略です。

はい。「VisualVasicを記載するための、エディター」ということです。

VBAは、このVBEを使って、プログラミングしていきます。

筆者は、さきほど照会したショートカットキー(Alt+F11)で、VBEを開いていますが、Excelのオプションで、リボンに「開発」タブを追加することができます。

フォームの挿入など、後々楽なので、「開発」タブが追加されていない方は、「ファイル」→「オプション」→「リボンのユーザー設定」で、メインタブの「開発」にチェックを入れてください。

チェックを入れると、以下のように開発タブが表示されます。

一番左の「Visual Basic」をクリックするとVBEが開きます。


さて、「VBE」の説明に戻ります。

左上の「プロジェクト」に注目してください。

VBAProjectの後ろの()内には、さきほど開いた「Book1」の名称が入っています。

見ての通り、プロジェクトは、ブック単位になっています。

「プロジェクト」については、あまり深く考えず、「VBAを書いていく単位」ぐらいに考えておけばよいかと思います。

基本的には、1アプリケーション(アプリケーション=ツールと読み替えてもいいでしょう)は、1ブック単位でVBAを書いていきます。

複数ブックにまたがることは、ありません。

(やってもいいかもしれませんが、あまり利点はないでしょう)


次に、その下の「MicrosoftExcelObject」についてみてみてください。

「Object」

はい、でてきましたね。「オブジェクト」

前回の講座をおさらいすると、VBAは「オブジェクト指向」のプログラミング言語だとお伝えしたと思います。


オブジェクト指向とは「ブックや、シート、セルを直感的に操作できる便利な機能」、でしたね。

オブジェクトには、現在

・Sheet1(Sheet1)

・Thisworkbook

の2つがあります。

Sheet1については、文字通りExcelのシートのことです。

なお、Sheet1が、プログラムが認識するためのシート名、()内が、実際のシート名称となります。

実際に、Excelのシート名を変更してみましょう。

シート名を「実際のシート名」としました。

VBEを見てみると

はい、()内が、Book1の実際のシート名に変更されていますね。

Sheet1は、アプリケーションが認識するための名前、()内が実際のシート名称となります。

また操作していくときに、この「実際のシート名称」については意識していくことになります。

次に、「Thisworkbook」について説明します。

「Thisworkbook」とは、文字通り「このワークブック」なのですが、「プロジェクトから見たときに、「自分自身」を指したもの」と覚えてください。

プロジェクトは、ブック単位、でしたね。

さきほど開いたのは「Book1」でしたので、このプロジェクトから見た「Thisworkbook」は、「Book1」のことを指します。

この「This」という概念は、わりと他の言語でも使いますので、覚えておいて損はないと思います。

「標準モジュール」を用意する

VBAは、通常「プロシージャ」という単位で記載します。

そのプロシージャを記載していくのが「標準モジュール」となります。

これは「そういうもの」なので、覚えるしかありません。

プロジェクトで右クリック→「挿入」をクリックすると、以下のように選択できます。

「クラスモジュール」は、オブジェクト思考で設計するときに使うものです。前回お伝えしたとおり、通常の業務改善で作成するプログラムは、すでに用意されているブック、シート、セルなどのオブジェクトを使うだけで十分なので、今は意識しなくても大丈夫です。

「標準モジュール」を挿入してみましょう!


はい、Module1が追加されました。この名称はプロパティで変更することができますが、今はとりあえずこのままにして、さきに進みます。

標準モジュールを開くと、以下のようになっています。

はい、真っ白です。

(「OptionExplicit」については、定義していない変数はみとめませんよ、というおまじないの文章なのですが、あとで説明しますのでいったん割愛します。)

さて、プロシージャを実際に書いていきましょう。

前回のフローチャートを思い出してほしいのですが、「プログラム」には、必ず「開始」があり、「終了」があります。

「開始」から「終了」までを、さらにこまかい単位に分けたり、いろんな場所にわけたり、「共通機能」はまとめたりするのですが、それが「設計」と呼ばれるフェーズになります。言語や環境の特性によってさまざまな手法がありますので、また別の講座で、細かく説明したいと思います。

今は手っ取り早くプログラムを動かすので、1つの単位を作ります。

それが、「サブプロシージャ」です。

****************

Sub Helloworld()

End Sub

****************

このSubというのが、サブプロシージャであることの宣言となります。

「Helloworld」という名称をつけました。

()は今は気にしないでください。サブプロシージャには必ず()が必要という認識は持っていてください。

「EndSub」は、サブプロシージャがここで終わりですよ、という宣言となります。

なお、VBEには、補完機能がありますので、「Sub 〇〇()」を記載して、エンターキーを押した時点で、「EndSub」が自動で入力されます。

これで、フローチャートの「開始 → 〇〇 → 終了」の部分だけできあがりました。

次に、〇〇の部分の「処理」を追加してみましょう。

「 MsgBox ("Helloworld")」

と記載してみてください。

Msgboxを表示することができます。

MsgboxのプロパティにHelloworldという文字列を

渡しています。

最終的には、以下のようになります。

Sub Helloworld()

MsgBox ("Helloworld")

End Sub

さて、このサブプロシージャを起動してみましょう。



VBEの「実行」→「Sub/ユーザーフォームの実行」を押します

はい、実行!

このようなダイアログが表示されたかと思います。

これがMsgboxです。

(処理が完了したときなどに、「処理が完了しました」など表示するときによく使います。)

ようこそ、VBAプログラミングの世界へ。

実際には、VBEから起動することはすくなく、別に配置する「ボタン」などに、サブプロシージャを紐づけて動作させることとなりますが、これは次回にやっていきましょう!

まとめ

①リボンに「開発」タブを追加しておこう

②VBAは「VBE」を使って書く

③「Thisworkbook」の「This」はプロジェクトからみた「自分自身」のブックという意味

④VBAは「サブプロシージャ」という単位で書く

 →サブプロシージャは、フローチャートの「開始 → 〇〇 → 終了」の枠組みを指す



この記事が気に入ったらサポートをしてみませんか?