ユーザーフォームを作成。操作性を考えた個性的デザイン

controleyecatcha

作成したExcelVBAをユーザーフォームでコントロールします。
利用者の操作性を考慮したデザインで作成しましょう。
トグルボタン、コマンドボタンなどを設置します。

こんにちは、じゅんぱ店長(@junpa33)です。

今回も雑誌と書籍の在庫管理表のソフト(棚卸表)作成方法についてです。

在庫リスト作成のために、今まで作ってきたそれぞれのVBAコードを起動するのに、

コントロールパネルをユーザーフォームで作成し起動ボタンを設置します。

「書誌棚卸表.xlsm」でユーザーフォームモジュールにVBAコードを記述します。

雑誌と書籍の在庫リスト(棚卸表)作成の記事編成

データを操作するユーザーフォームのデザインを考える

controlp024

”設定”、”動作”と”消去”の3つの項目に分けてボタンを配置します。

  1.  ”設定”の項目では動作モードの切り替えボタンと基本情報の入力
  2.  ”動作”の項目では各ステップごとに動作ボタンを設置します。
  3.  ”消去”の項目では各シートごとにクリアーボタンを設置と一度にクリアーするボタンを設置します。

のデザインレイアウトで作成していきます。

ユーザーフォームの設置方法とVBAコードの解説

controlp025

ユーザーフォームの表示と表示タイミング

VBE(ビジュアルベーシックエディタ)からユーザーフォームボタンをクリックします。

設置方法の確認はこちらからでも確認できます。↓

ユーザーフォームを表示する

ユーザーフォームの名称を「コントロールパネル」とします。

「コントロールパネル」の表示設定は、

「書誌棚卸表.xlsm」が開かれた時に表示されているようにします。

また、「作業シート」が開かれた時でも表示されるように記述しておきます。

”ThisWorkbook”のブックモジュールへの記述

「書誌棚卸表.xlsm」を開いたときに表示されます。ブックモジュールに記述します。

VBA
Private Sub Workbook_Open()
        If コントロールパネル.Visible Then Exit Sub
        コントロールパネル.Show vbModeless
End Sub

「作業シート」のシートモジュールへの記述

「作業シート」を開いたときにも表示します。シートモジュールに記述します。

VBA
Private Sub Worksheet_Activate()
        If コントロールパネル.Visible Then Exit Sub
        コントロールパネル.Show vbModeless
End Sub

ユーザーフォームの完成形

作成するユーザーフォームの完成形はこちらです。

control003a

ボタンサイズや設置のレイアウトなどは、操作には影響ないのでご自由にセットしてください。

ツールボックスで利用するボタンはこちらです。

control006aa

ユーザーフォームのボタン設置

名前の変更 「コントロールパネル」にする

まず最初にユーザーフォームの名称を「コントロールパネル」に変更します。

お好きな名前を付けて頂けますが、

その場合はここで書いているコード中の「コントロールパネル」すべてを同名に変更してください。

名前をセットするにはまず、「プロパティウインドウ」を表示する必要があります。

「表示」メニューから「プロパティウインドウ」をクリックしてください

control004a
矢印下001

プロパティウインドウの

  • オブジェクト名)を「コントロールパネル」にしてください。
  • ”Caption” を 「コントロールパネル」にしてください。
control005a

この様に表示することができます。

基本設定エリアについて

ここで設置するものは

  1. ON・OFFのためのトグルボタンを設置します。
  2. ラベルでトグルボタンの状態を表示します。
  3. テキストボックスを設置します。
  4. コマンドボタンを設置します。

です。

名称の「コントロールパネル」と「基本設定///////////」はラベルで作成してください。

「バーコードモード」ボタンはトグルボタンで作成します。

オブジェクト名)を「バーコードスイッチ」
”Caption” を 「バーコードモード」

にしてください。

文字色やベース色はお好みでセットしてください。

control007a

「バーコードモード」の状態を表示するにはラベルで作成します。

(オブジェクト名)を「モード」
”Caption” を 「OFF」

にしてください。

「OFF」にするのは、デフォルトがボタンが押されない状態にしたいためです。

control008a

「発行部署名」と「チェック場所名」の入力欄はテキストボックスで作成します。

「発行署名」は

(オブジェクト名)を「発行部署」
”Text” を 「発行部署名」

「チェック場所名」は

(オブジェクト名)を「調査場所」
”Text” を 「チェック場所名」

”Text”に記入した文字は、デフォルト表示となります。

文字サイズや文字色はご自由に設定してください。

control009a

「利用情報入力」ボタンはコマンドボタンで作成します。

オブジェクト名)を「利用入力」
”Caption” を 「利用情報入力」

にしてください。

文字色やベース色はお好みでセットしてください。

control010a

操作ボタンエリアについて

ここで設置するものは

  1. コマンドボタンを設置します。

です。

名称の「動作ボタン///////////」はラベルで作成してください。

「データ移動」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「データから作業」
”Caption” を 「データ移動データコピーから作業シートへ」

にしてください。

文字色やベース色はお好みでセットしてください。

control011a

「データ加工1」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「作業1」
”Caption” を 「データ加工1コードチェックと冊数」

にしてください。

文字色やベース色はお好みでセットしてください。

control012a

「データ加工2」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「作業2」
”Caption” を 「データ加工2重複削除・書名調査」

にしてください。

文字色やベース色はお好みでセットしてください。

control013a

「作業シート連続データ加工」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「作業連続」
”Caption” を 「作業シート連続データ加工」

にしてください。

文字色やベース色はお好みでセしてください。

control014a

「完成作表」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「表完成」
”Caption” を 「完成作表」

にしてください。

文字色やベース色はお好みでセットしてください。

control015a

クリアボタンエリアについて

ここで設置するものは

  1. コマンドボタンを設置します。

です。

名称の「クリアボタン///////////」はラベルで作成してください。

「コード入力クリア」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「コード入力CR」
”Caption” を 「コード入力クリア」

にしてください。

文字色やベース色はお好みでセットしてください。

control016a

「データコピークリア」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「データコピーCR」
”Caption” を 「データコピークリア」

にしてください。

文字色やベース色はお好みでセットしてください。

control017a

「作業シートクリア」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「作業シートCR」
”Caption” を 「作業シートクリア」

にしてください。

文字色やベース色はお好みでセットしてください。

control018a

「在庫表クリア」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「在庫表CR」
”Caption” を 「在庫表クリア」

にしてください。

文字色やベース色はお好みでセットしてください。

control019a

「ALLクリア」ボタンはコマンドボタンで作成します。

(オブジェクト名)を「全クリア」
”Caption” を 「ALLクリア」

にしてください。

文字色やベース色はお好みでセットしてください。

control020a

ユーザーフォームのコードウインドウ

基本設定エリアのVBAコード

「バーコードモード」のトグルボタンと状態表示のラベルについてのコードです。

ボタンを押した時は 変数CPに1を代入し、ラベルを「ON」の表示にします。

ボタンを外した時は 変数CPに0を代入し、ラベルを「OFF」の表示にします。

VBA
Private Sub バーコードスイッチ_Change()
        If バーコードスイッチ.Value = True Then
            CP = 1
            モード.Caption = "ON"
        Else
            CP = 0
            モード.Caption = "OFF"
        End If
End Sub

「利用情報入力」ボタンについてのコードです。

「発行部署名」に入力された値は変数「ShopName」に代入します。

「チェック場所名」に入力された値は変数「SpaceName」に代入します。

VBA
Private Sub 利用入力_Click()
        SpaceName = 調査場所.Value
        ShopName = 発行部署.Value
End Sub

動作ボタンエリアのVBAコード

「データ移動データコピーから作業シートへ」ボタンのコードは「在庫情報コピー」を起動します。

VBA
Private Sub データから作業_Click()
     Call Module1.在庫情報コピー
End Sub

「データ加工1コードチェックと冊数」ボタンのコードは「書誌コードチェック」を起動します。

VBA
Private Sub 作業1_Click()
     Call Module1.書誌コードチェック
End Sub

「データ加工2重複削除・書名調査」ボタンのコードは4つのプロシージャーを順に起動します。

VBA
Private Sub 作業2_Click()
        Call Module2.項目表示
        Call Module2.書誌重複削除
        Call Module2.冊数合計マッチ
        Call Module2.書誌名挿入
End Sub

「作業シート連続データ加工」ボタンのコードはコード④とコード⑤のすべてのプロシージャーを順に起動します。

VBA
Private Sub 作業連続_Click()
        Call Module1.書誌コードチェック
        Call Module2.項目表示
        Call Module2.書誌重複削除
        Call Module2.冊数合計マッチ
        Call Module2.書誌名挿入
End Sub

「完成作表」ボタンのコードは「場所別在庫表」を起動します。

VBA
Private Sub 表完成_Click()
        Call Module3.場所別在庫表
End Sub

クリアボタンのVBAコード

Module4に記述したプロシージャーの起動を行います。

「コード入力クリア」ボタンのコード

VBA
Private Sub コード入力CR_Click()
        Call Module4.コード入力表クリア
End Sub

「データコピークリア」ボタンのコード

VBA
Private Sub データコピーCR_Click()
        Call Module4.データコピークリア
End Sub

「作業シートクリア」ボタンのコード

VBA
Private Sub 作業シートCR_Click()
        Call Module4.作業シートクリア
End Sub

「在庫表クリア」ボタンのコード

VBA
Private Sub 在庫表CR_Click()
        Call Module4.在庫表クリア
End Sub

「ALLクリア」ボタンのコード

VBA
Private Sub 全クリア_Click()
        Call Module4.在庫表クリア
        Call Module4.作業シートクリア
        Call Module4.データコピークリア
        Call Module4.コード入力表クリア
End Sub

データを操作するユーザーフォームの設置方法のまとめ

controlp026

ユーザーフォームは、Moduleで記述したプロシージャーを起動させるGUIです。

そのソフトを利用する人が使い易いデザインやレイアウトにすることが重要です。

そういった意味で、さらに自由なカスタマイズで

いつもの作業する上での使い勝手や操作の癖、習慣なども考慮いただければ

その人にとって間違いなくより良いものが作れると思います。

今回で、雑誌と書籍の在庫リスト「書誌在庫表.xlsm」の作成についての記事は終了です。

短期間でエクセルVBAの独学習得を目指したいなら

controlp027

エクセルVBAを独学する独習方法は、学習者それぞれ十人十色、多種多様と思われます。

けれども、

出来るだけ効率よく学習するためには、いくつかの大切なポイントがあります。

独学でもVBA習得の中級クラスに達するのはそんなに難しいことではありません。

先人が行った勉強方法をあなたがそのまま利用すればよいということです。

vbastudyeyecatch002 エクセルVBAを独学で習得する!ために大切な7つのポイントを解説します

独習のための大切な7つのポイントは、上記記事にて解説しています。

独習によるVBA習得のキーワードは、出来るだけ多くの実例に触れること!です

正直、VBAの学習について自分の周りの仕事(業務)からだけ実例を得るのでは効率良い習熟は無理です。

ハッキリ言って、

本当に短い期間でVBA習得を成功させたいなら、今使っている参考書が良書かどうかを判断し、新ツールとしてオンライン学習も取り入れて行うことが、

手っ取り早く短期間習得できるというのは間違いないでしょう。

大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方
初めてのVBAの勉強、構えなくても気軽に始められる。
vbastudy020a
vbastudy021a

電子書籍版「大村式【動画&テキスト】Excelマクロ&VBA最高のはじめ方」をamazonで見てみる

(著者)大村あつし
(出版社)技術評論社
(税込価格)1,628円(本体1,480円+税)

学習書の新しい形です。
YouTubeと完全リンクした参考書です。入門と基礎を重点的に22本の動画で解説をしています。
ちょっとした空き時間を利用してでもスマホがあれば学習ができます。
動画は優しい語り口調で、視聴者にある意味安心感を与えてくれます。動画は5分から20分間ぐらいで22本の構成です。
文章解説と動画解説の関係性は、動画解説が主で、文章解説がサポートいう使い方もできます。

エクセルVBAを独習するのに参考書は欠かせません。 参考書選びは自分に合った「相棒」にできるものを選んでいきたいです。

vbastudyeyecatch2 エクセルVBAの独習でおすすめ参考書を7冊選ぶ。良書との出会いは大切です

今回の記事はここまでです。   最後までご覧いただき有難うございました。

エクセルVBA最速理解で必要な知識を集めよう!

エクセルVBA業務ツールで日常の業務改善を行いましょう。

<記事内容についての告知>VBAコードの記述記事においては、その記述には細心の注意をしたつもりですが、掲載のVBAコードは動作を保証するものではりません。 あくまでVBAの情報の一例として掲載しています。 掲載のVBAコードのご使用は、自己責任でご判断ください。 万一データ破損等の損害が発生しても当方では責任は負いません。