介護事業者のための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は「サブプロシージャ」という単位で書く
→サブプロシージャは、フローチャートの「開始 → 〇〇 → 終了」の枠組みを指す
この記事が気に入ったらサポートをしてみませんか?