家計簿作成part3〜ユーザーフォーム作成〜

VBA

今回は、家計簿の入力内容を指定するためのユーザーフォームを作成していきます。

ここではユーザーフォームの作成・使いやすくする工夫について学習できます。

ユーザーフォームの利用目的は「誰が利用しても、おかしな入力ミスを防ぐような入力規制」です。この目的を念頭に置いて作成していきましょう。

ユーザーフォームの大枠を作ろう

細かな設定は後回しにして、まずはユーザーフォームの大枠を作成していきましょう。

フォーム自体を用意する

ユーザーフォームを作るにしても、エクセル上のどこで出来るのか。

まず最初にやるべきことは、Visual Basicです。このVisual Basicはマクロ作成の際には、必ず利用しますので、覚えておきましょう。

そしてVisual Basicを開いたら、今回はユーザーフォームを用意しましょう。

タブ「挿入」の「ユーザーフォーム」をクリックすれば、新たなユーザーフォームが表示されます。

目的に合わせてデータ入力箇所を用意する

今回作成している家計簿において、シート「マスター」に各収支の内容を入力するためにユーザーフォームを利用します。

そのため、シート「マスター」に合わせた形でユーザーフォームの入力箇所を用意する必要があります。

利用するものは以下の2つです。

  • テキストボックス … なんでも入力できる ※設定で制限可能
  • コンボボックス  … 事前にリスト化したもののみ入力できる

テキストボックスの利用箇所は「金額や日付など入力されるデータのパターンが決まっていない」ものにしています。

コンボボックスの利用箇所は「入力内容が決まったものしかない」ものにしています。

例えば、「+」か「-」しか入力されない箇所はコンボボックスを利用します。なぜなら

  • 入力内容が2種類のみ
  • 半角で集計しているので、全角で入力されたくない。手入力だとそのミスが起こりうる

コンボボックスの利用するかの判断が最初のうちはできないかもしれません。そんな時は、全てテキストボックスで作成し、入力パターンに気づいたら改善しましょう。

では、どのようにボックスをユーザーフォームに追加するか。

上図より、「ツールボックス」の項目を選択し、ユーザーフォーム上でクリックすると表示されます。

サイズや配置はマウスで調整可能なので、お好みで配置しましょう。

ラベルをつけて分かりやすくする

では次に、先ほど用意したテキストボックス・コンボボックスに何を入力したらいいか分かりやすくする為に、ラベルをつけましょう。

ラベルには特別なことはありません。

ユーザーフォームで何をして欲しいか、何を入力して欲しいかなど、使用者分かりやすくなる目的で利用すれば良いでしょう。

マクロを登録するためのコマンドボタンを配置しておく

ユーザーフォームの大枠の最後として、コマンドボタンを配置しましょう。

コマンドボタンは、マクロを登録し、Enterやクリックをするとマクロを作動させられるボタンのことです。

今回、家計簿に用意したいコマンドボタンは2つです。

  • ユーザーフォームに入力した内容をシート「マスター」に反映するボタン
  • ユーザーフォームを閉じるボタン

以上2つを用意する必要があります。

登録するマクロについては、Part4で作成していきます。今回は、ボタンだけ用意しましょう。

2つのボタンを用意し、役割が明確にわかるように名前を付けたら完了です。

ユーザーフォームを使いやすくしよう

ユーザーフォームの大枠は完成しました。

このままでも利用は可能ですが、より便利なものへと改良していきましょう。

ENTERを押すと上から順番に入力箇所を移動

「入力箇所を上から順に、ENTERを押せば1つ下の項目へ移動」するような仕組みになっていないと、ENTERを押すたびにあちこちへと入力コマンドが移動してしまう可能性があります。

そこで「Tab Index」を訂正すると、ENTERを押した後の移動先を設定できます。

上から順に移動させたいため、日付は「1」、「+/-」は「2」と上から順に番号を振ります。

そして、全て入力したら、コマンド「入力」のマクロもEnterで起動するようにしたいです。

そこで、順番に行くとコマンド「入力」のTab Index は「8」にします。

そして、Enterでコマンド「閉じる」へ移動しないように、コマンド「閉じる」のTab Index を「10」にしましょう。

入力箇所ごとに半角数字・ローマ字入力の指定

入力箇所ごとに、入力する文字が異なります。

例えば、日付・金額なら半角数字、備考はローマ字などそれぞれ決まっています。

そこで、入力するたびに英語入力・日本語入力の切り替えをするのは面倒なので、自動で切り替わるようにしましょう。

テキストボックス・コンボボックス1つずつのプロパティ「IME Mode」を設定することで、自動切り替えができます。

今回は以下の通りに設定します。

  • 日本語入力する箇所  …4 – fmIMEMode Hiragana
  • 数字のみ入力する箇所 …8 – fmIMEAlpha

入力文字数の制限

少しでも入力ミスを防ぐために、テキストボックスごとの入力可能文字数を設定します。

例えば、日付のように必ず8桁の数字を入力すると決まっている箇所については余計なミスを防ぐことが可能になります。

プロパティ「Max Length」に入力した数字が文字数制限となります。

下図で言うと、日付のテキストボックスには8文字までしか入力できないように設定できます。

まとめ

ユーザーフォームの設定が完了しました。

これで入力方法を指定できるようになったので、次回はいよいよマクロ作成をします。

コメント

タイトルとURLをコピーしました