イベントプロシージャを記述

以降の処理は「下準備」編で説明した通りに、「OK」ボタンを押した時、「閉じる」ボタンを押した時のイベントプロシージャを記述します。
ユーザーフォームの

オブジェクト名を「frmInput」、

Captionを「データ入力」にします。
「OK」ボタンをクリックした時のbtnOK_Clickプロシージャは 「下準備、の3」で勉強しました。

01:Private Sub btnOK_Click()
02:    ActiveCell.Value = txtMonth.Value
03:    ActiveCell.Offset(0, 1).Activate
04:    ActiveCell.Value = txtDay.Value
05:    ActiveCell.Offset(0, 1).Activate
06:    ActiveCell.Value = cmbCode.Value
07:    ActiveCell.Offset(0, 1).Activate
08:    ActiveCell.Value = txtSubject.Value
09:    ActiveCell.Offset(0, 1).Activate
10:    ActiveCell.Value = txtRemarks.Value
11:    ActiveCell.Offset(0, 1).Activate
12:    ActiveCell.Value = txtIncome.Value
13:    ActiveCell.Offset(0, 1).Activate
14:    ActiveCell.Value = txtDisbursement.Value
15:    ActiveCell.Offset(0, 1).Activate
16:    ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"
17:    ActiveCell.Offset(1, -7).Activate
18:    Unload frmInput
19:End Sub
ワークシート上にボタンを配置し、ダイアログを開く処理も

01:Option Explicit
02:   Public MYDialog As Boolean
03:
04:Sub データ入力()
05:   MYDialog = True
06:   Sheets("sheet1").Select
07:   Range("B65536").End(xlUp).Activate
08:   ActiveCell.Offset(1, 0).Activate
09:   Do Until MYDialog = False
10:        frmInput.Show
11:   Loop
12:End Sub
ダイアログの「閉じる」ボタンを押した時のbtnClose_Clickプロシージャも「下準備」で勉強しました。

01:Private Sub btnClose_Click()
02:    MYDialog = False
03:    Unload frmInput
04:End Sub

ワークシートからダイアログを呼び出すボタンを設置します。



出来上がったアプリケーションを早速試してみましょう。

「記帳する」ボタンをクリックするとセルがB3の位置に移動しています。
必要事項を入力して「OK」ボタンを押すと入力データが所定の位置に書き込まれました。
しかし、結果をみると最後の残高欄に「#VALUE」と表示されています。
数式バーから確認すると「=I2+G3-H3」になっています。

「OK」ボタンのプロシージャを確認してみましょう。

ActiveCell.FormulaR1C1 = "=R[-1]C+RC[-2]-RC[-1]"

これは、現在アクティブなセルの一つ上のセルの値に、現在アクティブなセルの二つ前のセルの値を足し、現在アクティブなセルの一つ前のセルの値を引く。
という意味ですから、一つ上は数値ではなく「残高」という文字ですから計算できませんので「#VALUE」と表示されてしまうのです。

一行目を手入力で書き込んでおくことが一番簡単な方法です。
あるいはセルI2に先月からの繰越残高金額を入力しておく方法も可能ですね。

図10:




© AstroHeart. All Rights Reserved.