このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

【6日でできるVisual Basic2022入門】⑤ボタンをクリックした時の処理

⑤ボタンをクリックした時の処理

 今回は「⑤ ボタンをクリックしたときの処理」です。デザイン画面で配置した「BMI を計算」ボタンの Click イベントに、入力取得→検証→計算→表示の一連の処理を実装します。

5.ボタンをクリックした時の処理

5.1. どこにコードを書くか(イベントハンドラーの作成)

方法操作結果
ダブルクリックデザイン画面で CalcButton をダブルクリックCalcButton_Click が自動生成され、コード画面に移動
プロパティウィンドウCalcButton を選択 → 稲妻アイコン(イベント)→ ClickCalcButton_Click と入力同上
既存ハンドラーを結合既存メソッド末尾に Handles CalcButton.Click を追記該当メソッドがクリック時に呼び出される。

5.2. イベントハンドラーの基本形(シグネチャ解説)

Private Sub CalcButton_Click(sender As Object, e As EventArgs) Handles CalcButton.Click
    ' ここに処理を書く
End Sub
要素意味
Privateフォーム外からは呼び出させない(フォーム内専用)
Sub戻り値を返さない手続き(サブルーチン)
sender As Objectどのオブジェクトから呼ばれたか(今回は CalcButton
e As EventArgs追加情報(クリック時の状態など)
Handles CalcButton.Clickこのメソッドを CalcButton の Click イベントに結び付ける。

5.3 .実装する処理の流れ

  1. 画面の文字列を取得(HeightTextBox.TextWeightTextBox.Text
  2. Double.TryParse で数値に安全変換(失敗ならメッセージで案内)
  3. 0 以下や極端な値をガード(早期リターン)
  4. BMI を計算:体重(kg) ÷ (身長(m)²)
  5. 小数第1位に丸めて BmiTextBox に表示
  6. 判定メッセージを ResultLabel に表示

5.4. サンプルコード(Form:MainForm.vb)

⑥で分岐ロジックをさらに整理・拡張しますが、ここでは完走できる実装を提示します。

Option Strict On
Option Infer On

Public Class MainForm

    Private Sub CalcButton_Click(sender As Object, e As EventArgs) Handles CalcButton.Click
        ' 1) 入力の取得と検証
        Dim heightCm As Double
        Dim weightKg As Double

        If Not Double.TryParse(HeightTextBox.Text, heightCm) Then
            MessageBox.Show("身長は半角の数字で入力してください。", "入力エラー")
            HeightTextBox.Focus()
            HeightTextBox.SelectAll()
            Exit Sub
        End If

        If Not Double.TryParse(WeightTextBox.Text, weightKg) Then
            MessageBox.Show("体重は半角の数字で入力してください。", "入力エラー")
            WeightTextBox.Focus()
            WeightTextBox.SelectAll()
            Exit Sub
        End If

        If heightCm <= 0 OrElse weightKg <= 0 Then
            MessageBox.Show("身長と体重は 0 より大きい値を入力してください。", "入力エラー")
            Exit Sub
        End If

        ' 2) BMI 計算(身長は m 単位に変換)
        Dim hMeter = heightCm / 100.0
        Dim bmi = weightKg / (hMeter * hMeter)

        ' 3) 表示整形(小数第1位、0.0 形式)
        Dim bmiRounded = Math.Round(bmi, 1, MidpointRounding.AwayFromZero)
        BmiTextBox.Text = bmiRounded.ToString("0.0")

        ' 4) 判定メッセージを表示
        ResultLabel.Text = GetBmiCategory(bmiRounded)
    End Sub

    ' 判定(簡易版):⑥で条件分岐の考え方と改良を解説します
    Private Function GetBmiCategory(bmi As Double) As String
        If bmi < 18.5 Then
            Return "やせ気味です。体調管理に気をつけましょう。"
        ElseIf bmi < 25.0 Then
            Return "標準です。今の生活リズムを続けましょう。"
        ElseIf bmi < 30.0 Then
            Return "やや高めです。食事と運動のバランスを見直しましょう。"
        Else
            Return "高めです。専門家への相談を検討してください。"
        End If
    End Function

End Class

5.5. 主要処理のポイント(コード解説)

位置役割解説
TryParse文字列→数値の安全変換例外を出さずに True/False を返すため UI 入力に最適。失敗時は早期リターン
0 ガード無効値の排除heightCm <= 0weightKg <= 0 を弾く
丸め見やすさMath.Round(bmi, 1, MidpointRounding.AwayFromZero) で四捨五入
出力表示整形ToString("0.0") で「22.4」など 1 桁表示
判定条件分岐簡易基準で日本語メッセージを返す(⑥で分岐の設計を詳説)

5.6. 実行例(入出力サンプル)

入力:身長(cm)入力:体重(kg)表示:BMI表示:判定
1706522.5標準です。今の生活リズムを続けましょう。
1604517.6やせ気味です。体調管理に気をつけましょう。
1728528.7やや高めです。食事と運動のバランスを見直しましょう。

5.7. Visual Basic 2022 の関連要素(命令・構文メモ)

要素役割ミニ例
Handlesイベント結合Handles CalcButton.Click
MessageBox.Showユーザー通知MessageBox.Show("...", "入力エラー")
Exit Sub早期リターン検証失敗時に残りの処理を中断
Math.Round四捨五入Math.Round(value, 1)
If … ElseIf … End If分岐判定メッセージ切替
Function … Return値を返す処理の分離GetBmiCategory

5.8. よくあるつまずきと対策

症状原因対策
クリックしても何も起きない。イベント未結合メソッド末尾の Handles CalcButton.Click を確認/再生成
文字列を足してしまう。数値変換を忘れたDouble.TryParse を必ず通す。
BMI が 0 や極端な数値になる。単位変換ミス身長は cm→m に変換してから計算
例外が出る。Null や想定外値TryParse+早期リターンで堅牢化、0 ガードを入れる。

次章への接続

ここでイベント処理の骨格が完成しました。次の「⑥ 分岐条件を使う方法」では、

  • 入力別のエラーメッセージの出し分け
  • 値域チェック(上限・下限、現実的な範囲)
  • 判定メッセージの細分化(境界値の扱い、色変更など UI 連動)
    を、If~ElseIf、Select Case などで設計・整理し、ロジックの見通しを良くします。