|
次のような場合、どのように計算しますか?
|
| 単価(円) |
数量(個) |
| 1,000 |
10 |
| 500 |
5 |
| 750 |
8 |
| 300 |
3 |
| 330 |
7 |
|
|
合計:???円 |
このような計算の場合、電卓を使うと入力ミスで最初から計算し直し、なんてことが結構あります。
- 入力したデータを後から確認できると便利.
- 入力したデータを簡単に訂正できたら便利.
このような条件を満足する、VBAの練習と実用を兼ねた計算フォームを作ってみます。
| [ ポイント] |
- 【Excel-VBA を使ってみよう】の ■入門編 を参考にフォームを作成.
- テキストボックスを単価・数量に必要個数(今回の場合それぞれ5個)を配置する.
- 合計の値が入るテキストボックスを配置.
- テキストボックスの配置順序は左上から順番に.(これを変えるとテキストボックスの名前がプログラム中で変わってくる.)
- コマンドボタンを配置.(ボタンの表記を変更)
|
| ■テキストボックス、ボタンの配置 |

赤丸順にテキストボックスを配置する。
|
|
| ■ボタンの表記を変更 |

@をクリック(選択)して、A[Caption] の [CommandButton1] となっているところを
[終了] に変更する。
|
| ■フォームの完成 |
 |
| [ ポイント] |
- 下記枠内を入力する.(慣れるまではコピー&ペーストせずに手入力したほうが良い.)
|
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox3_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox4_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox6_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox7_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox8_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox9_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub TextBox10_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Goukei
End Sub
Private Sub Goukei()
Total = 0
If Me.TextBox1 <> "" And Me.TextBox6 <> "" Then
Total = Total + Me.TextBox1 * Me.TextBox6
End If
If Me.TextBox2 <> "" And Me.TextBox7 <> "" Then
Total = Total + Me.TextBox2 * Me.TextBox7
End If
If Me.TextBox3 <> "" And Me.TextBox8 <> "" Then
Total = Total + Me.TextBox3 * Me.TextBox8
End If
If Me.TextBox4 <> "" And Me.TextBox9 <> "" Then
Total = Total + Me.TextBox4 * Me.TextBox9
End If
If Me.TextBox5 <> "" And Me.TextBox10 <> "" Then
Total = Total + Me.TextBox5 * Me.TextBox10
End If
Me.TextBox11 = Total
End Sub
Private Sub CommandButton1_Click()
End
End Sub |
※ここから後はプログラムの動作には影響しないが、使いやすさ、カッコ良さを追求する場合に必要。
| [ ポイント] |
- テキストボックス、ラベル、ボタンを配置できるように整える.
- 「単価」 「数量」 「合計」 のラベルを配置する.
- 体裁を整える.
|
| ■テキストボックス、ボタンを移動する |

- フォーム上部に項目を入れられるよう@をドラッグしてフォームを縦に伸ばす。
- テキストボックス、ボタンを選択し、下方向にドラッグして移動する。
|
| 移動完了 |
 |
| ■ラベルを配置する |
 |
| ■表示を変える |

同様に 次の表のとおりに変更する。
| 項目 |
Cation |
TextAlign |
Hight |
| Label1 |
単価 |
2 - fmTextAlignCenter |
10 |
| Label2 |
数量 |
2 - fmTextAlignCenter |
10 |
| Label3 |
合計 |
2 - fmTextAlignRight |
10 |
|
| ■体裁の調整 完了 |
 |
| [ ポイント] |
- 入力順序を決定する.
- フォームの名前を設定する.
- 各フィールドの表示を整える.
|
| ■入力順序と入力モードの設定 |

- TABキーを押したときに矢印の順序でカーソルが移動するようにする。
- 入力モード(IMEモード)の設定を Off にする。

|
- @ を クリック(選択).
- A の [IMEMode] の項目を [2 - fmIMEModeOff] にする.
- B の [TabIndex] の項目を [0] にする.この数値順にカーソルが移動する.
- C の [TabStop] の項目を [True] にする.
同様に「単価」 「数量」 の[TabIndex] と [TabStop] を設定する.
「合計値」 は [TabStop] の項目を [False] にする.(「合計値」にはカーソルが行かない設定)
|