スポンサーリンク

【絶対やさしい入門講座】はじめてのプログラミングをやってみよう第4回 [VisualBasic/VB2019]

VBやさしい入門講座

VB.net/VB2017/VB2019

たし算以外もできる計算プログラムを作る

前回はたし算のみの計算ができるプログラムをつくりました。今回はひき算やかけ算、わり算などを計算を選べるプログラムを作っていきましょう。

前回の画面デザインを修正する

今回は新規作成ではなく、前回のプログラムを修正していくかたちで作り上げていきます。

前回に作りました「たし算プログラム」のプロジェクトを開いてください。

 

フォーム画面上の「+」ラベルを削除して、次の画面になるようにコントロールを2つ追加してください。

追加したコントロールのプロパティを設定します。

番号種類プロパティ
ComboBoxNamecmbCalc
Width45
Height20
DropDownStyleDropDownList
ButtonNamebtnEnd
Width100
Height30
Text"終 了"

 

最後にコントロールの配置の調整をしてください。

 

コードを記述する

「実行ボタン」のコードを修正

デザインのフォーム画面で「実行」ボタン(btnExec)ダブルクリックして、コードエディターを開きます。

前回に記述してあるbtnExec_Clickメソッドの中身を書き換えますので削除します。

削除できましたら、以下の新しいコードを入力してください

記述するコード
'計算に使う変数の宣言
Dim intCalc As Integer
'ここから入力チェックの処理 -----

'txtA、txtBに入力があるかチェック
If txtA.Text = "" Or txtB.Text = "" Then

    'どちらかが入力無い場合、メッセージ&終了

    'メッセージ表示
    MsgBox("入力してください")
    '処理終了
    Exit Sub

End If

'txtA、txtBが数値に変換できる値かどうかチェック
If IsNumeric(txtA.Text) And IsNumeric(txtB.Text) Then

  '両方とも数値変換できる場合、何もしない

Else
  'そうでない場合、メッセージ&終了

  'メッセージ表示
  MsgBox("数値を入力してください")
  '処理終了
  Exit Sub
End If

'コンボボックスが選択肢を選んでるかのチェック
If cmbCalc.SelectedIndex = -1 Then

  'メッセージ表示
  MsgBox("コンボボックスを選択してください")
  '処理終了
  Exit Sub
End If

'ここから計算の処理 -----

'コンボボックスの選択内容により分岐する
Select Case cmbCalc.SelectedIndex
  Case 0
    'たし算
    intCalc = CInt(txtA.Text) + CInt(txtB.Text)

  Case 1
    'ひき算
    intCalc = CInt(txtA.Text) - CInt(txtB.Text)

  Case 2
    'かけ算
    intCalc = CInt(txtA.Text) * CInt(txtB.Text)

  Case 3
    'わり算
    intCalc = CInt(txtA.Text) / CInt(txtB.Text)

End Select

'計算結果をラベルに表示
lblAns.Text = CStr(intCalc)

 

フォームロード時にコード記述する

フォーム画面のコントロールを配置していない、空いているスペースダブルクリックします。

新しくフォーム画面がロードされる時に動作するフォームロード イベントForm_Loadメソッドが自動で追加されます。

その中に以下のコードを追加してください。

記述するコード
'コンボボックスにアイテムを追加
cmbCalc.Items.Add("+")
cmbCalc.Items.Add("−")
cmbCalc.Items.Add("×")
cmbCalc.Items.Add("÷")

終了ボタンにコードを追加する

デザイン画面で「終了」ボタンをダブルクリックします。

「終了」ボタンのクリックイベントbtnEnd_Clickメソッドが自動で追加されますので、コードを記述してください。

記述するコード
'プログラムを終了
End

実行して動作確認を行う

すべてがコピーできたら、動作確認をしてミスなどが無いかをチェックしてください。

 

コーディングの解説

今回のコードを解説していきます。

If文の条件で複数条件を判定する

If txtA.Text = "" Or txtB.Text = "" Then

以前までなら一つの条件で、そのIf文の分岐を判定していました。

今回の条件では Or演算子 を追加しています。

Or演算子は前後の条件のどちらかがTrueの場合に、全体の評価としてTrueになるという演算子です。

ですので、ここでは

テキストAが未入力 または テキストBが未入力」という意味の質問をしています。

 

数値に変換できるかの判定

IsNumeric(txtA.Text)

IsNumericというメソッドを使用して、後ろの () カッコの中身が数値に変換できるかどうかを調べています。

txtA.Text に数値変換できないような値 “ABC” が入っていた場合、 IsNumeric(txtA.Text) としてはFalseを意味するようになります。

また逆に、数値に変換できるような “123” が入っていた場合は、Trueを意味するようになります。

 

コンボボックスで選択中のインデックスがわかるプロパティ

'コンボボックスが選択肢を選んでるかのチェック
If cmbCalc.SelectedIndex = -1 Then

SelectedIndexプロパティは、コンボボックスで選択中のアイテムのインデックスが格納されています。

コンボボックスが未選択の状態の場合は、SelectedIndex には -1 が格納されています。

その項目が必須入力の時は、このように判定して未入力を防ぎます。

 

分かりやすく複数分岐するSelect Case

'コンボボックスの選択内容により分岐する
Select Case cmbCalc.SelectedIndex

Select Caseについてはこちらで詳しく説明しています。

[VisualBasic]一つの対象によるSELECT文の複数条件分岐
VB.net/VB2017/VB2019 一つの対象に複数の条件分岐を行うSELECT文 一つの対象にして複数条件分岐を行いたい場合にはSelect文のステ...

 

フォームロードイベントに記述する意味

フォームロードイベントのメソッドには以下のコードがあります。

'コンボボックスにアイテムを追加
cmbCalc.Items.Add("+")

これはコンボボックスに選択肢となるアイテムを追加する命令です。

また、フォームロードイベントはプログラムを実行した時に、最初の方に駆動するイベントなので、コンボボックスにアイテムを追加する処理をこのイベントで行なっています。

 

プログラムを終了させる命令

End

終了ボタンを押すと、プログラムを終了されたいので、終了させる命令を読んでいます。

 

さいごに

色々な計算をさせるためにコンボボックスというコントロールを使いました。皆さんもよく使うコントロールの一つなので、よく見かけるのではないでしょうか。

 

次回がいよいよ最終の「年齢計算プログラム」です。今までの事を使えば出来るようになっていますので、楽しんで制作してください。

【絶対やさしい入門講座】はじめてのプログラミングをやってみよう第5回 [VisualBasic/VB2019]
VB.net/VB2017/VB2019 年齢計算するプログラムを作る 今回は最終回として年齢計算のプログラムを作ってみましょう。 画面デザインする 前...
タイトルとURLをコピーしました