HOMEへ
PRODUCTSへ
LEARNING
LINKへ
LOGO
HeadLine
Image画像
MailTo:

次のような場合、どのように計算しますか?

単価(円) 数量(個)
1,000 10
500 5
750 8
300 3
330 7
合計:???円


このような計算の場合、電卓を使うと入力ミスで最初から計算し直し、なんてことが結構あります。

  • 入力したデータを後から確認できると便利.
  • 入力したデータを簡単に訂正できたら便利.

このような条件を満足する、VBAの練習と実用を兼ねた計算フォームを作ってみます。



1.テキストボックスを配置する

[ ポイント]
  • 【Excel-VBA を使ってみよう】の ■入門編 を参考にフォームを作成.
  • テキストボックスを単価・数量に必要個数(今回の場合それぞれ5個)を配置する.
  • 合計の値が入るテキストボックスを配置.
  • テキストボックスの配置順序は左上から順番に.(これを変えるとテキストボックスの名前がプログラム中で変わってくる.)
  • コマンドボタンを配置.(ボタンの表記を変更)

■テキストボックス、ボタンの配置
テキストボックスの配置

赤丸順にテキストボックスを配置する。



■ボタンの表記を変更



@をクリック(選択)して、A[Caption] の [CommandButton1] となっているところを [終了] に変更する。



■フォームの完成
2.プログラム・コードを入力する

[ ポイント]
  • 下記枠内を入力する.(慣れるまではコピー&ペーストせずに手入力したほうが良い.)
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


ここまでのサンプル(ダウンロード) ⇒ CalcForm1.xls





※ここから後はプログラムの動作には影響しないが、使いやすさ、カッコ良さを追求する場合に必要。

3.ラベル、「閉じる」ボタンを配置する

[ ポイント]
  • テキストボックス、ラベル、ボタンを配置できるように整える.
  • 「単価」 「数量」 「合計」 のラベルを配置する.
  • 体裁を整える.

■テキストボックス、ボタンを移動する
オブジェクトの移動


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


同様に 次の表のとおりに変更する。
項目 Cation TextAlign Hight
Label1 単価 2 - fmTextAlignCenter 10
Label2 数量 2 - fmTextAlignCenter 10
Label3 合計 2 - fmTextAlignRight 10


■体裁の調整 完了
4.詳細を整える

[ ポイント]
  • 入力順序を決定する.
  • フォームの名前を設定する.
  • 各フィールドの表示を整える.

■入力順序と入力モードの設定

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



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

  「合計値」 は [TabStop] の項目を [False] にする.(「合計値」にはカーソルが行かない設定)


■フォーム名称設定

  1. フォームをクリック(選択)して @
  2. A の [Caption] の項目を [計算フォーム] に変更.

■各フィールドの表示を整える

  1. 「単価」 「数量」 「合計」 のテキストボックスすべて選択して @
  2. A の [TextAlign] の項目を [3 - fmTextAlignRight] に変更.

  完成




ここまでのサンプル(ダウンロード) ⇒ CalcForm2.xls

5.その他

これで完成としますが、まだまだ詳細を詰めるべきところがあります。

検討してみてください。
ORDER FORMへ
もどる

 計算フォームの作成

もどる


VBA World
E-Mail:info@vba-world.com