イベントプロシージャを記述
以降の処理は「下準備」編で説明した通りに、「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.