お知らせこの記事はVBAでユーザーフォームの関連記事です
DBとして使うシートを用意 入力フォームからの情報を受け取ります
シリーズ4つ目の記事です。本記事ではユーザーフォームから情報を転送する別ブックのシートを用意していきます。
ユーザーフォームはエクセルのワークブックに紐付いている機能ですので一緒にワークシートを持っています。
よってユーザーフォームと同じワークブック内のワークシートを使えば良いのではないかと考える人も居ます。
結論としては別ブックでシートを用意する必要があります。
「別ブックでシートを用意する必要があるのですか?」と質問される方は多いです。
グループで仕事をする際は別ブックにデータをストックした方が都合が良いですよ。
グループで使う様なシステムを用意する際はデータをストックする場所は分けた方が都合が良いです。
以下画像のような環境が理想です。管理者しかシートに直接手を触れることが出来ないエクセルを用意する事が出来ます。
今回用意するデータは画像とは少し仕様が異なります。
画像では各PCと中央のデータを結ぶ矢印が双方向ですがPC(フォーム)側からの矢印しかない環境を構築していきます。
PC側からは値を入力するだけにします。管理者だけ情報を取り出す事ができる環境にします。
これでグループ内のメンバーによる値の改ざんを防ぎます。
前回記事
前回記事はこちらです。
関連書籍
私はこちらの書籍でユーザーフォームを勉強しました。
電子書籍はこちらです。私は電子書籍をおすすめします。圧倒的に取り回しが楽だからです。
本記事での課題
今回の課題です。
ワークシートを用意する
今回はDBの代わりとなるシートを用意していきます。
単純にワークブックを1つ用意するというだけの行為になりますが4つのポイントをもとに作業を進めていきます。
色々ありますがまずは上記4つに気を付けて考えていきましょう。
1_フォームで選択された情報をすべて受けとる事が出来る仕様
これが出来ないと情報を受ける側のシートとして成立しません。
フォームで選択可能な情報を整理し全ての分岐に耐えられる仕様にします。
フォームの状態を整理します。前回記事で作成したフォームでは以下内容を選択、入力する仕様にしています。
この3つの情報をうまく格納していくためにワークシートの仕様を検討しましょう。
まずは「車種」です。「車種」はシートで分ける仕様にしています。(シリーズ2番目の記事内で決めました)
「車種」の情報の受け取り方は決まったので残りの「日付」と「行先」を受ける体制を検討していきます。
「日付」については同日に複数の行先が発生する可能性がある事を想定しておく必要があります。
受け側のシートには同日の日付でも記入出来るような配置や仕様を用意する必要がありそうです。
最後に「行先」です。行先は日付に紐付いていれば良いです。
よって「日付×行先」の組み合わせで情報を追加出来るような仕様であればユニーク値として記録に残していけそうです。
イメージを整理すると以下のようなシートが好ましいのではないかと考えました。
シートから他の情報に加工するときの取り回しの良さを考えたレイアウト
せっかく作るデータですので他の仕事にも使える様にしたいものです。
例えば何らかの意思決定の際ある程度検討に必要な数値があると意思決定がはかどります。
その際使える様にデータがすぐ出せるような建付けにしておくことをおすすめします。
事例で考えてみましょう
「1ヵ月とか1年単位で車種毎に使用状況が見たい」と指示があったとしましょう。
こんな時にすぐ数値化出来る仕様にしておくと後々データ処理が楽になります。
今回は「車種×ワークシート」で情報を分けています。
日付、行先を各列に配置しているのでピボットテーブルを使えばすぐに使用状況を数値化出来ます。
ピボットテーブルをマクロで用意しておけばさらにデータ処理が楽になりますね。
続いてシートの名前の付け方について考えていきます。
シートの名前の付け方
フォームで入力、選択する車種と同じ名前でシートを用意するのが望ましいです。
理由としてはコードを書く際以下のように検索する事がある為です。
という様に検索をかけてシートを特定します。
ここは深い理由はなくコードが書きやすくなるのでそうしたいというだけです。
拡張子
最後の項目です。エクセルならなんでもOKです。
エクセルじゃなくても良いのですが取り回しを考えるとエクセルが一番楽です。
拡張子は「.xlsm」、「.xlsx」、「.xls」どれでもOKです。
今回用意するデータシートでも集計様にマクロを組むのであれば.xlsmになります。それ以外は.xlsxで良いでしょう。
.xlsは出来るだけ使わない様にしましょう。こちらの記事で説明しています。
まとめ
ただフォームの情報を受けるだけになりがちなのですがしっかり考える必要があります。
今回の様に少し広く考えてみるとシートの仕様が決めやすくなります。
- フォームを考慮したシート構成
- 出来るだけシンプルにする事
- 拡張子にも気を配ろう
Enjoy Excel
実際の仕事に合わせた構造にする事でどんなデータをどうやって配置するのが良いのかが見えてきます。
1回では難しいかもしれませんが今回紹介したような事に気を付けてご自身でもトライしてみてください。
次の記事からはこのシリーズで最大の難所です。コードを書いていきます。
出来るだけ簡単に書いてますがシリーズ冒頭でお知らせした様に今までとは難しさの質が違います。
扱う対象がセルだけではなくコントロールも加わりますので少し変わった事をやっていきますね。