VBAでユーザーフォーム-4シート操作|情報の転送先となるシートを用意する

お知らせこの記事はVBAでユーザーフォームの関連記事です

お知らせ記事には広告が含まれておりますがExcelのスキルUPに繋がる様コンテンツ自体は手を抜かずに作成しております

WinスクールにはVBAの講座が5つ用意されています

DBとして使うシートを用意 入力フォームからの情報を受け取ります

フォームから情報を転送する先のシートを用意していきます。

ユーザーフォームはエクセルに紐付いている機能ですので一緒にワークシートを持っています。

まれに「新たにシートを用意する必要があるのか?」と考える方も居ます。

グループで使う様なシステムを用意する際はデータをストックする場所は分けた方が都合が良いです。

以下画像のような環境が理想です。

管理者しかシートに直接手を触れることが出来ないエクセルを用意する事が出来ます。

今回はPC(フォーム)側からの矢印しかないフォームです。

他の使い方をする時はDBにインプットした情報を訂正したい事もあるでしょう。

その時はDBからPC(フォーム)側に既存の情報を渡す事も可能です。

これで矢印が双方向になります。エクセルでもこのような環境を作る事ができます。

イメージとしてはこの様にデータシートの周りにPC(フォーム)が配置された環境を用意したいです。
EnjoyExcel
EnjoyExcel

データをストックするシートは別にしておくと値の改ざんもありません。

フォーマットも守られます。

意思決定で必要なデータ等管理者なら簡単に取り出す事が出来るようになります。

本記事での課題

今回の課題です。

EnjoyExcel
EnjoyExcel
課題

DBの代わりとなるシートを実際に作ってみよう

前回記事

前回記事はこちらです。

ポイント

今回はDBの代わりとなるシートを用意していきます。

単純にワークブックを1つ用意するというだけの行為になりますが押さえるところが何点かあります。

シートを用意するうえで検討するためのポイント
  • フォームで選択された情報をすべて受け取る事が出来る仕様にする事
  • シートから他の情報に加工するときの取り回しの良さを考えたレイアウトにする事
  • シートの名前の付け方
  • 拡張子

色々ありますがまずは上記4つに気を付けて考えていきましょう。

フォームで選択された情報をすべて受けとる事が出来る仕様

これが出来ないと情報を受ける側のシートとして成立しません。

というわけでフォームで選択可能な情報を整理してすべての分岐に耐えられるようにしないといけません。

フォームでは以下内容を選択、入力します。

フォームで選択、入力する要素
  • 日付
  • 車種
  • 行先

車種はシートで分けるのであとは日付と行先を受ける体制を整える必要があります。

日付については同日に複数の行先が発生する可能性があります。

受け側のシートには同日の日付でも記入出来るようなスペースを用意する必要がありそうです。

日付を決めたセルを作ってしまうと複数の行先が発生した際フォームの情報を受けきれない為です。

最後に行先です。

行先は日付に紐付いていれば良いです。

日付×行先の組み合わせで情報を追加出来るような建付けを用意しましょう。

まずはこのような仕様であれば問題なく情報をストックしていけると思います。

整理すると以下のようなシートが好ましいのではないかと考えました。

日付が重複してもこれなら受け皿として耐えられる仕様になってますよね。

シートから他の情報に加工するときの取り回しの良さを考えたレイアウト

せっかく作るデータですので他の仕事にも使える様にしたいものです。

例えば何らかの意思決定の際ある程度検討に必要な数値があると意思決定がはかどります。

その際使える様にデータがすぐ出せるような建付けにしておくことをおすすめします。

事例で考えてみましょう

「1ヵ月とか1年単位で車種毎に使用状況が見たい」と指示があったとしましょう。

こんな時にすぐ数値化出来る仕様にしておくと後々楽です。

今回は車種=ワークシートで分けます。

日付、行先を各列に配置するのでピボットテーブル等集計手段を使えばすぐに使用状況を数値化出来ます。

もちろんマクロで用意してもOK。マクロで用意するのであればやはり体系化されたデータが必要です。

この建付けでも十分集計が出来そうですのでこのままの仕様で進めましょう。

続いてシートの名前の付け方について考えていきます。

シートの名前の付け方

フォームで入力、選択する車種と同じ名前でシートを用意するのが望ましいです。

理由としてはコードを書く際以下のように検索する事がある為です。

フォームで入力した車種名=シート名

という様に検索をかけてシートを特定します。

ここは深い理由はなくコードが書きやすくなるのでそうしたいというだけです。

拡張子

最後の項目です。エクセルならなんでもOKです。

エクセルじゃなくても良いのですが取り回しを考えるとエクセルが一番楽です。

.xlsm、.xlsx、.xlsどれでもOKです。

今回用意するデータシートでも集計様にマクロを組むのであれば.xlsmになります。

フォームの情報を受けるだけなら.xlsxとなります。

.xlsは出来るだけ使わない様にしましょう。こちらの記事で説明しています。

まとめ

ただフォームの情報を受けるだけになりがちなのですがしっかり考える必要があります。

今回の様に少し広く考えてみるとシートの仕様が決めやすくなります。

本日勉強したこと
  1. フォームを考慮したシート構成
  2. 出来るだけシンプルにする事
  3. 拡張子にも気を配ろう
シートにも気を使おう

Enjoy Excel

実際の仕事に合わせた構造にする事でどんなデータをどうやって配置するのが良いのかが見えてきます。

1回では難しいかもしれませんが今回紹介したような事に気を付けてご自身でもトライしてみてください。

では次がこのシリーズで最大の難所。コードを書きます。

出来るだけ簡単に書いてますがシリーズ冒頭でお知らせした様に今までとは難しさの質が違います。

扱う対象がセルだけではなくコントロールも加わりますので少し変わった事をやっていきます。

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