EXCEL、VBAプログラミング入門8~条件分岐~第2回目

今回は、EXCEL VBAの条件分岐について説明をする第2回目です。

サンプルのExcelファイルである計算機についてのオペレーションについて説明をしながら、分岐条件の内容について解説を行います。

例えば、1111+5を行う場合を例にします。
下図は、ボタン「1」を4回押されたときの図です。セル番地「B3」には「1111」と表示されています。セル番地「B3」は計算機としてのディスプレイの役割を果たしています。

次に「+」ボタンを押します。すると、一旦、セル番地「B3」はクリアされます。さらに、ボタン「5」を押すと、セル番地「B3」には「5」と表記されます。この状態で、「計算」ボタンを押すと、「1111」+「5」を計算して、「1116」という結果をセル番地「B3」に表示します。ちなみにこの際に「1116」という数値を内部で記憶しています。

さらに、結果の「1116」に「1」を足したい場合には、ボタン「1」を押して、・・・・といったオペレーションとなるわけです。

その際には、セル番地「B3」には、「11161」と表示するのではなく「1」と表示する必要があります。

数値を入力している最中の場合、例えば、セル番地「B3」に「111」と表示されている場合には、ボタン「1」を押すとセル番地「B3」には「1111」と表記します。よって、この場合にはボタン「1」のプログラムとしては、セル番地「B3」の文字の右側に「1」と文字を結合して表示する必要があります。

しかし計算ボタンが押された後には、例えば、セル番地「B3」に「1116」と表示されている場合には、ボタン「1」を押すとセル番地「B3」には「1」と表記します。よってこの場合にはボタン「1」のプログラムとしては、セル番地「B3」の文字を一旦、クリアして「1」と文字を表示する必要があります。

つまり、ボタン「1」という処理は状況によって、セル番地「B3」に表示されている文字に「1」を結合して表示する場合と、セル番地「B3」を一旦、クリアして文字「1」を表示する場合があるわけです。

この際の状況というのが、ボタン「1」を押す前にどのボタンを押していたのかということです。

EXCEL VBAでは、ボタン毎にプログラムを記載しますが、ボタン「1」という処理だけでは判別できない内容に対して、Public変数を使用して前の状態を保持しておく訳です。

具体的には、「計算」ボタン処理内でPublic変数に特定の文字を代入しておき、ボタン「1」処理内でPublic変数の値をチェックすることにより、前の状態を判別します。

下図にボタン「1」の処理を示します。

具体的には、Public変数である「表示モード」に、「計算」ボタン処理内で「結果」という文字を代入しておき、上記のif文で表示モード内の文字を判別して処理を行います。

上記より、計算ボタンが押された後に「1」ボタンを押した場合にはセル番地「B3」の文字を一旦、クリアしてさらに「1」と文字を表示する必要があります。

上記のプログラムでは、セル番地「B3」をクリアしているだけですので、この後、セル番地「B3」に「1」を表示すれば良いわけです。

セル番地「B3」に「1」を代入するには、下図のように記載します。

このように記載しますと、
Range(“b3″).value=””
にてB3セルをクリアしてから、次の行で
Range(“b3″).value=”1”
をセットしていますが、
Range(“b3″).value=””
は不要であることが分かります。

今回の場合には、ifの条件分岐が1つですがその他に条件分岐したい場合には、以下のように記載します。

If  条件式1 Then
条件式1を満たす場合の処理
ElseIf  条件式2 Then
条件式2を満たす場合の処理
ElseIf  条件式3 Then
条件式3を満たす場合の処理
Else
その他の処理
End If

上記ではElseIfは2つですが、いくつでも記載できます。また、今回の例のようにElseIfがなくてもよいです。Elseは条件式1、条件式2、条件式3のいずれの条件も満たさない場合に処理がされます。Elseは無くてもよいです。

また、条件式内では上図では
表示モード = “結果” Or 表示モード = “記録”
となっています。Orは論理和を示し、表示モードが”結果”または”記録”の場合に処理が行われます。つまり、Orの場合にはどちらかの条件を満たせば、良いわけです。

条件式内でよく出てくる内容としては、and(論理積)があります。
例えば、
If 得点> 79 And 得点 <= 100 Then
MsgBox “優秀です”
End if
となった場合、得点が79より大きく、かつ、100以下の場合に、条件式内の処理が行われます。つまり、Andの場合にはすべての条件を満たす必要があるわけです。

ちなみに、MsgBoxはダイアログボックスを表示する関数で、「優秀です」と表示されたメッセージボックスが表示されます。

今回のようにボタン「1」を押された場合の処理といった具合に、プログラムはそれぞれの部分毎にプログラムを作成していく必要がありますが、それぞれの部分の処理であっても、その処理は全体のプログラム、今回の場合でいうと「計算機」というプログラム全体の中で機能する処理です。

そのため、今回のように例えば前の状態によって、処理を場合分けしたりといったことが必要になってきます。今回の場合には、2つの分岐条件でしたがシステムが複雑になるともっと複数の場合分けが必要になってきます。

場合分けが複雑になってきますと、段々と頭の中が整理できなくなってきて、プログラムがむちゃくちゃになってしまうことがあります。プログラムの入門書などで勉強をしているとプログラムの言語仕様(文法)の細かい説明が多くなりますので、勉強している方もそのようなプログラムの言語仕様が理解できるとプログラムが理解できると考えがちですが、今回のように言語仕様の内容だけではなく、もっと大きな処理の全体の流れをつかむことが重要です。

また、場合分けなどが複雑になってきた場合には、単に頭の中だけで考えているだけでは整理が難しいので、紙に書いて整理するということも必要になってきます。そのように、紙に書いてプログラムの仕様を整理したものが、プログラムの設計書となっていく訳です。

 


ニコニコチャンネル(月額固定で見放題)
http://ch.nicovideo.jp/ai-light
本記事に関連する動画講座を閲覧できます。一部の動画は無料でも閲覧できます。

YouTubeチャンネル(無料動画配信中)
https://www.youtube.com/user/ailightcom
ITと経営に関する動画を配信しております。
よろしければ、チャンネル登録をお願い致します。

無料から学べる講座
https://www.ai-light.com/itkeiei/
本記事に関連する動画講座をセット販売しております。
その他、ITと経営に関する動画もセット販売しております。

格安ホームページ制作所
https://www.ai-light.com/hp2
インターネットマーケティングに関する記事が無料で閲覧可能です。

株式会社アイライト公式HP
https://www.ai-light.com/
(Access・Excelでシステム開発会社を探されている法人様はこちら)

ITでお困りのことがございましたら、まずはご相談(コンサルティング)
https://www.ai-light.com/itconsulting.html


弊社は、主に中小企業様向けの業務システム開発ホームページ制作パソコンサポートコンサルティングなど、ITに関する様々なサービスを格安で提供しております。
特に小規模な業務システム開発の分野では、主にAccess(アクセス)を利用した柔軟で効率的な開発を得意としており、関西でダントツの実績があります。

業務システム開発に関しては、以下のような内容で対応しております。
・顧客管理などの単機能なシステムは20万円~50万円が多い。
・受注から入金まで業務全体システムで100万円~350万円ぐらいが多い。
・Access(アクセス)-SQLserverで大規模システム開発は350万円~1500万円が多い。

詳細は、Access(アクセス)、Excel(エクセル)、WEBサイト製作による小規模システム開発のページをご参考ください。

大阪商工会議所からの推薦を受けて、中小企業庁運営の中小企業支援事業に専門家として登録されました。
通称ミラサポ。3回まで無料でのコンサルティングが可能です。ご興味がある方はご連絡ください。
https://www.mirasapo.jp/


(近畿大学にて非常勤講師も務めたバリバリの技術屋が経営する会社)

Access(アクセス)Excel(エクセル)SQL server バーコード Webシステムを使った業務システムのシステム開発の無料相談を受付中

株式会社 アイライト 担当:内藤 響(Naito Ko)
〒550-0005 大阪市西区西本町1丁目5番9号 日清ビル 5F
(四つ橋線 本町駅 24番出口すぐ)
まずは、メール・電話でご相談ください。
TEL : (06) 6599-8890 E-mail : info@ai-light.com
お電話が混んでいる場合が多いので、つながりにくい場合は
TEL : (06) 6535-5117までお願いします。