お知らせこの記事はVBAでユーザーフォームの関連記事です
シリーズ終了時に完成するフォーム、シート、ブックを全て公開
ユーザーフォームに関するシリーズの第2段です。早速ですが今回のシリーズのアウトプットを紹介します。
なかなかコードを書き始めませんが意図的に先に座学を持ってきています。
勉強初期でユーザーフォームが良く分からない方にすぐコードから入るのは負荷が高く大変です。
コード=良く分からない呪文 になってしまいます。よって先に事の顛末をまず見ていただきます。
その後でコードや解説を紹介していくという形でデータを用意しています。
先にアウトプットを見ておいた方が作業全体の流れを把握しやすくなりますよ。
前回記事
シリーズ最初の記事はこちらです。
関連書籍
私はこちらの書籍でユーザーフォームを勉強しました。
電子書籍はこちらです。私は電子書籍をおすすめします。圧倒的に取り回しが楽だからです。
本記事での課題
今回の課題です。
アウトプットについて
今回は会社で使用する車(社有車)の使用履歴を入力するというデータを作っていきます。
以下のような使い方を想定しています。
車を使った人が使用後に「いつ・どの車で・どこに行ったか」を記入する
というものです。情報の流れは以下画像の様に考えています。
本当は走行距離や同行者等必要な情報がある様にも思えます。
今回はユーザーフォームの建付けを覚えてもらうのが目的ですので少ない情報で作業を進めます。
各種要素について
どんなかたちでデータを用意するのか、シートやフォームの仕様を説明します。
データの収納先
現在は1つのフォルダ内に2つのデータを並列で置いています。
最初なので出来るだけ簡単に考える事が出来る様に同じフォルダ内の同じ階層にデータを置きました。
ワークブック
2つ用意しています。フォームが用意されたデータとフォームで入力したデータの転送先のデータです。
- フォーム.xlsm
- データ.xlsx
各ブックには以下ワークシートが用意されています。
- フォーム
- プロボックス
- カローラ
- ノア
- カムリ
フォーム側はシートが1枚、データ側は車種毎にシートを用意するので全部で4枚となります。
フォームについて
以下コントロールで構成されています。各機能の説明は前回記事を確認ください。
データ.xlsxのワークシートについて
以下の様な感じです。フォームの内容が飛んできても収納出来るような列を用意しています。
フォームでは日付、車種、行先を指定します。こちらのシートには3つの要素を受け止める仕様になってますよね。
備考
冒頭にも書いてますが本当に運用するとなったらもう少し情報を増やす必要がありそうです。
2つのデータは同じフォルダ内に格納されています。
フォームへの入力が面倒になると「データ.xlsxを開いて直接書き込む」という人も出てくるかもしれません。
このような環境はデータ.xlsxを管理者しか見れない所に移動させてしまう等運用で改善する事も出来ます。
または直接書き込むことが出来ない様シートのロックをかける事も可能です。
運用面で困った時はこのように既存の機能をVBAで使うという事も検討してみてください。
実際に使ってみる
では以下のようにデータを選択、入力して「登録」ボタンを押してみます。
参考ですが今私が一番行きたい場所を行先に指定してみました。
「データを転送しました」というダイアログが立ち上がります。
これでデータを閉じます。ではデータ.xlsxのカローラのシートを見に行きましょう。
データが入力されています。
こんな感じでフォームから別データの1つのシートにを情報を転送するという作業を見てもらいました。
まとめ
VBAはこんな事も出来るんですよ。フォームとして用意したデータをグループメンバーに展開します。
各メンバーは自分のPCから好きなタイミングで1つのデータに情報を書き込むことが出来る様になります。
- アウトプットの概要
- DB用のシートとフォームの関係
- 情報が遷移する状態を確認
Enjoy Excel
更に作り込むと複数メンバーでExcelを開くと読取専用になってしまうという問題も回避する事が出来ます。
最終的にはそういった細かいところまで紹介していくつもりです。
まずはこの最低限の機能でユーザーフォームに慣れてもらおうと思っています。
次の記事からはフォームの作成に入ります。