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

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

主な説明の内容は以下の通りです。
1)変数の定義内容を確認
2)IF文について
3)ステップ実行をする

下図の通り、「1」ボタンを押した際の処理は「Private Sub cmd1_Click()」という部分が該当しています。

1)変数の定義内容を確認
Private Sub cmd1_Click()内での処理ですが、
If 表示モード = “結果” Or 表示モード = “記録” Then
の部分で「表示モード」という部分は””で囲まれていませんので変数を表しています。この変数がどこで定義さえているのかを確認するには、「表示モード」という部分を選択して。マウスの右クリックで「定義」を選択します。

選択を行うと、下図の通り「表示モード」変数が定義されている場所に移動します。下図の最上部のウィンドウのタイトルを確認すると「Modules1(コード)」と表記されているのが確認できます。また、下図の左側の「プロジェクトエクスプローラー」を確認すると標準モジュール内に「Modules1」が確認できます。さらに「Modules1」内の上部に
Public 表示モード As String
と記載されているのが確認できます。

「表示モード」はパブリック変数ですので、本システムの全体で有効な変数です。

先ほど内容を確認していた「Private Sub cmd1_Click()」内の「表示モード」箇所に戻るには、下図の通り、「表示モード」箇所を選択後にマウスの右クリックでメニューを表示して「元の位置へ移動」を選択すると元に位置に戻ることが可能です。

2)IF文について
以下の処理に関してはパブリック変数である「表示モード」に「結果」という文字ないし「記録」という文字が入っているとIf文内の処理を行うことになります。
If 表示モード = “結果” Or 表示モード = “記録” Then
Range(“b3”).Value = “”
End If

If文内の処理とは
Range(“b3”).Value = “”
の部分を処理するということです。

「Or」は前後のどちらかの条件が成立すれば良いという意味です。つまり、
表示モード = “結果”
または
表示モード = “記録”
という意味です。

表示モード = “結果”
は表示モード変数に「結果」という文字が入っているかを判別している処理です。

次にIf文内の処理である
Range(“b3”).Value = “”
という部分ですが、””内に文字が記載されていません。つまりは、ブランクを
Range(“b3”).Value
に代入することになります。

「b3」とはセル番地を示しており、下図では矢印の部分が該当します。

以下の部分に関する処理内容をまとめと以下のようになります。
If 表示モード = “結果” Or 表示モード = “記録” Then
Range(“b3”).Value = “”
End If

パブリック変数「表示モード」に「結果」ないし「記録」という文字が入っている場合にはセル番地「b3」の値を削除(ブランクに)するという処理になります。

このようにある条件に合致する際にのみ、処理を行うことを条件分岐と言います。

条件に合わない場合には、処理を行いませんので、上記の処理ではパブリック変数「表示モード」に「結果」ないし「記録」という文字が入っていない場合には
Range(“b3”).Value = “”
という処理は行われません。

3)ステップ実行をする
実際の処理の動きを確認するにはプロシージャ内の左側の灰色部分をクリックすると下図の通り茶色の丸印が付きます。これは、ブレークポイントといい、処理内でこの部分に来ると一旦、処理がストップします。

下図の通り、上部の開発タグでデザインモードが選択されている場合には、ボタン「1」を押してもボタンが選択されるだけで実行はされません。

デザインモードが選択されている場合には、上図の通り「デザインモード」という箇所が灰色になっています。この状態で「デザインモード」を選択すると灰色が解除されて、実行モードとなります。

逆に「デザインモード」が灰色になっていない状態で、「デザインモード」を選択するとデザインモードになってしまうので注意して下さい。

この状態でボタン「1」を押します。

すると、下図のようになります。

ボタン「1」を押した時の処理である
Private Sub cmd1_Click()
が実行されます。

ブレイクポイントを
If 表示モード = “結果” Or 表示モード = “記録” Then
の部分で設定しているので、黄色の色が付き処理がストップしています。

ブレイクポイントまでの処理である以下の処理が行われています。
ワーク = Range(“b3”).Value
Range(“b3”).Value = ワーク & “1”

Range(“b3”).Value
で、セル番地「b3」の値を取得して、「ワーク」変数にセットします。セル番地「b3」には「11」という文字が入っていますので、「ワーク」変数に「11」がセットされます。

次に
Range(“b3”).Value = ワーク & “1”
の部分ですが、「&」は文字列の結合ですから「ワーク」変数に文字「1」を足します。

「ワーク」変数に「11」がセットされていますから、それに文字「1」を結合するわけですから、結果は「111」となり、セル番地「b3」には「111」が表示されるのです。

つまり、ボタン「1」を押したことにより表示箇所に「1」という文字が入力されるわけです。電卓で数字キーを入力した場合のディスプレイの動きと同じです。

次の処理を行いたい時は、「F8」キーを入力します。

すると、下図の通りif文内の処理は行われずにend if の行に処理が移動します。

これまでの処理内では「表示モード」変数に文字をセットする処理はありませんでしたから、現在の「表示モード」変数はブランクです。従って、if文内の処理は飛ばされました。

最後に
表示モード = “入力”
にて、「表示モード」変数に「入力」という文字をセットして本処理は終了します。

さらに、もう一度、ボタン「1」をクリックします。

以下の通り、再度、ブレイクポイントで処理がストップしますが、「表示モード」という文字の箇所をクリックすると、「表示モード=”入力”」という文字が浮かびあがり、「表示モード」変数に先ほどの処理でセットされた値である「入力」という文字がセットされていることが確認できます。

プログラム処理を理解するには、実際の実行中に変数にどのような値がセットされていてどのような動きをするかを追うことが重要です。その際に、活躍するのがステップ実行です。

 


ニコニコチャンネル(月額固定で見放題)
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までお願いします。