EXCEL、VBAプログラミング入門17~計算ボタン処理を動かす~第2回目

今回は、EXCEL、VBAプログラミングの第17回目で計算ボタン処理について説明をする第2回目です。

今回は、以下のことについて解説を行っています。
1)はじめに
2)「10+」と入力した時の処理
3)さらに「20」と入力して「計算」ボタンを押した時の処理

1)はじめに
前回の説明で計算ボタン処理について説明を行いました。今回は、ステップ実行の機能を使って処理の内容を確認していきます。

ステップ実行を行うためにブレイクポイントを設定します。ブレイクポイントとは、「ステップ実行」のセクションで説明をした通り、一旦、処理を止める機能です。処理がブレイクポイントの箇所まで来ると一旦、ストップしますので、ブレイクポイント以降はステップ実行が可能となります。

前回に説明をした通り、「計算」ボタン処理は計算ボタン処理単独では処理が成立しません。そこで、今回は「計算」ボタンを押す前に「+」ボタン処理を稼働させて処理全体の動きを確認したいと思います。

そのため、下図の通り、2箇所にブレイクポイントを設定しました。ブレイクポイントを設定するには下図の矢印の部分をクリックすると、茶色の丸が表示されます。その部分がブレイクポイントとなります。

図1.ブレイクポイントの設定

ブレイクポイントを解除するには、茶色の丸の部分をクリックすると茶色の丸が消滅して、ブレイクポイントが解除されます。

今回は「10+20」と入力して最後に「計算」ボタンを押すという処理の動きをステップ実行でトレースしていきます。「計算」ボタンは電卓では「=」ボタンと同じですから、「10+20」を計算する処理を行っていることになります。

2)「10+」と入力した時の処理
それでは実際に稼働テストを行います。まずは「10+」と入力します。

すると、下図の通りブレイクポイントで一旦、処理が停止します。現在稼働している箇所は、黄色の背景となっている箇所です。

図2.足算処理で処理を止める

ステップ実行を行っていくには、「F8」キーを押します。

図2の足算処理では
Call 四則演算(“足算”)
にて「四則演算」関数を呼び出しています。

「四則演算」関数内の処理は下図の通りです。

図3.四則演算処理

各変数にどのような値が入っているかを確認します。

すでに「表示モード」変数には「入力」という文字が入っていますので、
If 表示モード = “結果” Or 表示モード = “記録” Then
内の処理は行われません。

また、「一時記憶」変数には値が入っていませんので、
If 一時記憶 = “” Then
    一時記憶 = Worksheets(“sheet1”).Range(“b3”).Value
    Range(“b3”).Value =
にて、「一時記憶」変数に「10」という値がセットされます。

前の演算子 = 演算子
にて、「前の演算子」変数に「足算」という値がセットされます。

3)さらに「20」と入力して「計算」ボタンを押した時の処理
次に「20」と入力して「計算」ボタンを押します。

すると下図の通り、
Call 四則演算(前の演算子)
でブレイクポイントを設定していましたので一旦、処理が止まります。

図4.「計算」ボタン処理

「前の演算子」変数にカーソルを合わせると「前の演算子」変数に入っている値を確認できます。現在は、前述の通り「足算」という値がセットされていることが確認できます。

四則演算処理では、「表示モード」変数には「入力」という値が入っています。各数値を押した際には、「表示モード」変数には「入力」という文字がセットされるからです。

「表示モード」変数には「入力」という値が入っていますので
If 表示モード = “結果” Or 表示モード = “記録” Then
内の処理は行われません。

次に「一時記憶」変数には前回の処理で「10」が入力されていますので、以下のElse以降の処理が行われます。また、「演算子」変数には「足算」という値がセットされていますので、以下の処理が行われます。

Else
    Select Case 演算子
        Case “足算”
            Worksheets(“sheet1”).Range(“b3”).Value
      = CDbl(一時記憶) + CDbl(Worksheets(“sheet1”).Range(“b3”).Value)

CDbl(Worksheets(“sheet1”).Range(“b3”).Value)には、現在「20」という値がセットされていますので、無事に「10+20」が実行される訳です。

次の演算に備えて、以下の処理で「10+20」の結果である「30」を再度、「一時記憶」変数に代入しています。
     一時記憶 = Worksheets(“sheet1”).Range(“b3”).Value

また、次の処理で「表示」モード変数に「結果」という文字をセットしています。
表示モード = “結果”

これは、その次の処理で例えば、「+」ボタンを押された場合に再度、足算処理を行わないようにするためです。つまり、「+」ボタンを押した際には

If 表示モード = “結果” Or 表示モード = “記録” Then
    MsgBox “数値を入力して下さい”
    Exit Function
End If

の部分で演算処理を行わずに、処理を中断できるわけです。

最後に、再度「演算子」変数の値を「前の演算子」にセットしています。
前の演算子 = 演算子
今回の処理内では、「前の演算子」変数には何も値を入れない方が良いかもしれませんが、前述の処理を考えるとこの部分の処理を削除する訳には行きません。

安易にこの処理のことだけを考えて、
前の演算子 = 演算子
を削除してしまうと他の処理の部分で不都合が起こります。プログラムは全体的なことも考えて処理を組まないといきません。

そのため、四則演算関数を抜けた後には、図4の

Private Sub 計算_Click()
   Call 四則演算(前の演算子)
   前の演算子 = “”
End Sub

の部分に処理が帰ってきますので、
前の演算子 = “”
にて「前の演算子」変数の値をここでクリアしている訳です。

WindowsはGUI(グラフィカルユーザーインターフェイス)の画面ですから、ユーザーはあちらこちら構わずにボタンを押す可能性があります。例えば、「計算」ボタンを押した後にまた、「計算」ボタンを押したりするかもしれません。

しかし、制作している段階では想定している動きがありますので、「計算」ボタンを押した後に「計算」ボタンを押すことはありません。しかし、使用するユーザーはどのようにボタンを押したり数値を入力するか分かりませんので、自身が想定しない操作をされた場合でも計算結果がおかしくなったり、処理が強制終了されないようにしなければなりません。

そのためには、様々なケースを想定してテストを行う必要があります。


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